sql - 如何将同一张表中的 2 个查询与不同的 group by 组合起来?(甲骨文)
问题描述
我需要计算准时到达和离开。查询准时出发:
SELECT DEPAIRPORT as AIRPORT,
COUNT(case when A.STATUS = 'Scheduled' and
A.ACTUAL_BLOCKOFF is not null then 1 else NULL END) as SCHEDULED,
COUNT(case when ((A.ACTUAL_BLOCKOFF+ interval '7' hour) - (A.SCHEDULED_DEPDT+ interval '7' hour))*24*60 <= '+000000015 00:00:00.000000000' and
A.ACTUAL_BLOCKOFF is not null then 1 else NULL END) as ONTIME
FROM TABLE A GROUP BY DEPAIRPORT
和查询以计算准时到达:
SELECT COUNT(case when ((A.ACTUAL_BLOCKON + interval '7' hour) - (A.SCHEDULED_ARRDT+ interval '7' hour))*24*60 <= '+000000015 00:00:00.000000000' and
A.ACTUAL_BLOCKON is not null then 1 else NULL END) as ARRONTIME
FROM TABLE A
GROUP BY ARRIVALAIRPORT
如何将这些查询组合成 1 个单一查询,以便我可以像这张表一样显示它:
Name #Schedule #OnTimeDeparture #ArrivalOntime
AIRPORTX 41 35 20
解决方案
你可以使用这样的东西:
select
max(SCHEDULED) as SCHEDULED,
max(ONTIME) as ONTIME,
max(ARRONTIME) as ARRONTIME
from (select
count(case when ... ) over(partition by DEPAIRPORT) as SCHEDULED,
count(case when ... ) over(partition by DEPAIRPORT) as ONTIME,
count(case when ... ) over(partition by ARRIVALAIRPORT) as ARRONTIME
from a );
但我想你的问题并不完整。您还需要一个密钥来加入不同的航班。
推荐阅读
- mysql - 如何设置触发器以将 user_id 复制到另一个表
- user-agent - 如果用户日志指示没有用户代理,这意味着什么?
- java - selectionSort 方法,将按类型对 ArrayList 进行排序
- python - python中的字典数组检查
- c++ - 索引和替换的计算成本
- c# - 不同大小的游戏对象之间的 2d 跑步者相同的间距
- spring-boot - 在 spring-boot-starter-web 项目中实现 HATEOAS 的最佳方法是什么?
- reactjs - React Router V4 - 如何只有参数?
- html - 在移动设备或小显示器上切换悬停效果以链接
- java - 有没有办法在 jhipster 中有一个单独的微服务用于登录?