首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建一个查询,以确定机票是单程还是往返。

创建一个查询,以确定机票是单程还是往返。
EN

Stack Overflow用户
提问于 2022-09-30 06:04:20
回答 2查看 84关注 0票数 0

我有一个机票桌,我需要帮助,以确定机票号码是单程还是往返,如图片所示。

以下是我需要满足的规范:

  1. 如果一张机票只有一张优惠券,它就自动被认为是单程机票。如果下一张机票等同于当前目的地,而当前原点与下一个目的地相同,则应为“往返”。如果他们有相同的票号和优惠券>= 1.

实际上,我有一个来自两个表的JOIN语句(重复的航班表),但是我不知道在哪里包含上一个/下一个目的地。

代码语言:javascript
复制
TicketNumber    Coupon  Origin  Destination Value
1000    1   USA JPN One-way
1001    1   JPN USA One-way
1002    1   CAN USA Roundtrip
1002    2   USA CAN Roundtrip
1002    3   CAN BAH One-way
1002    4   BAH USA One-way
1003    1   BRA COL One-way
1003    2   COL MEX Roundtrip
1003    3   MEX COL Roundtrip
1004    1   KOR IND One-way
1005    1   KOR JPN One-way
1005    2   JPN USA One-way
1005    3   USA KOR One-way
1006    1   IND GBR Roundtrip
1006    2   GBR IND Roundtrip
1007    1   CHN JPN One-way
1008    1   SWE DEN Roundtrip
1008    2   DEN SWE Roundtrip
1009    1   MEX USA One-way
1009    2   USA CAN One-way
1010    1   FRA GBR One-way

你能帮我做这个吗?

EN

回答 2

Stack Overflow用户

发布于 2022-09-30 08:18:57

  • 示例表如下所示:图像

SQL脚本:

下面的脚本用于根据指定的逻辑查找它是单程旅行还是往返行程。

代码语言:javascript
复制
select *,
CASE
WHEN MAX(coupon) OVER (PARTITION BY ticketno)=1 then 'ONE-WAY' 
WHEN dest=lead(origin,1) over (partition by ticketno order by coupon) AND origin=lead(dest,1) over (partition by ticketno order by coupon) then 'ROUND-TRIP' 
WHEN origin=lag(dest,1) over (partition by ticketno order by coupon) AND dest=lag(origin,1) over (partition by ticketno order by coupon) then 'ROUND-TRIP'    
ELSE 'ONE-WAY' 
END AS Value
from TABLE1

输出表:

票数 0
EN

Stack Overflow用户

发布于 2022-09-30 08:26:23

如果我正确理解你的问题,也许解决办法是这样的?

往返是那些行,对于这些行,表包含的行是相同的,但是原点和目的地翻转,优惠券要么高一点,要么低1。

代码语言:javascript
复制
UPDATE flights
SET value = 'Roundtrip'
WHERE 
    (ticketnumber, coupon, origin, destination) IN (
    SELECT ticketnumber, coupon + 1, destination, origin
    FROM flights UNION
    SELECT ticketnumber, coupon - 1, destination, origin
    FROM flights)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73904599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档