我有要求,如出口座位的航班每排至少有一个座位必须使用(占用)。
例如:出口排座位是4ABC,4DEF,5ABC,5DEF。在4ABC至少有一个座位被使用,4 DEF至少有一个座位应该被使用同样的第5排也。如果4ABC,4DEF,5ABC,5DEF每排至少有一个座位没有使用,那么需要抛出警告。我有查询,返回下面的结果
SELECT FLIGHT_CARRIER,FLIGHT_NUMBER,SEAT_NUMBER,PAX_ID,LOCATION_ATT,flight_date,int_row_pos,availability_attribute
FROM SEAT_ALLOC WHERE AIRLINE ='LL'
AND FLIGHT_CARRIER = 'LL'
AND LOCATION_ATT LIKE '%E%'
AND FLIGHT_NUMBER='7893'
AND flight_date=to_date('2021-10-10', 'YYYY-MM-DD');
字符串
结果
Results
现在如何验证每一行来检查availability_attribute是否可用。
我计划使用HashMap来分配这些值。但是是否有任何查询级别可以处理,比如用例。
3条答案
按热度按时间wh6knrhe1#
样本数据如下:
字符串
.使用退出行状态创建CTE:
型
要获取警告,请将上述CTE与您的数据连接起来:
型
结果应该是...
型
这应该给予你不同的航空公司/航班号/飞机/日期/.的警告,并得到数据集可以进一步处理,以得到你需要的。
UPDATE -退出行的动态块(注解后)
它看起来像是可以得到不同的块和座位的兴趣使用提供的数据.为此,我们将需要一个更大的样本数据集与三个不同的座位设置.
型
在这里,我们有三种类型的出口排。第一排有6个座位,我们将分成2个街区,每个街区有3个座位。第二个航班有8个座位排,将分成3个街区,每个街区有2-4-2个座位。第三个航班有7个座位出口排,将分成3个街区,每个街区有2-3-2个座位。下面是cte(exit_rows_stat)来完成:
接下来是另一个cte(exit_row_seat_blocks)来定义块中的座位:
有了这个,我们可以建立每个区块的空座位字符串。如果每个区块的空座位列表等于上面的区块座位列表,那么在警告栏中显示警报。
093gszye2#
您可以使用分析函数和条件聚合来检查每个座位块中是否至少预订了一个座位:
字符串
如果您需要不同的分组,请更改
PARTITION BY
子句,并包括您需要的任何其他列和过滤器(它们被删除,因为它们似乎不需要演示必要的技术)。xlpyo6sf3#
我假设
LOCATION_ATT
值包含一个'E'(LIKE '%E%'
),它将座位标识为在出口排。此外,我们不知道哪些排是现有排,可能有0个或多个出口排。我还基于所有有问题的飞机都有一个单独的过道,两边各有3个座位(ABC
和DEF
)。此外,航空公司、乘客和日期值对于这个问题来说是多余的,所以我把它们去掉了。
一些示例数据,包括非退出行值:
字符串
我们可以看到,在第5排,
D
、E
或F
的座位都没有被填满,这意味着应该产生一个警告。我已经将问题分解为一些更小的部分,在这里产生CTE。首先,让我们获得出口排座位:型
然后计算出每个块中有多少个是空的:
型
由此,很容易根据需要生成警告:
型
输出量:
型