sql - 为列中的每个值创建子查询
问题描述
我希望创建一个 SQL 查询来回答以下问题:“哪个是每个月最常见的目的地机场?” 该表的结构使其具有 Month 和 Destination_Airport 列(除其他外),我希望查询结果如下所示:
月 | 目的地_机场 |
---|---|
1 | 肯尼迪 |
2 | 洛杉矶国际机场 |
3 | 操作系统 |
4 | 米娅 |
和 | 很快 |
我已经尝试过这个查询SELECT Month, Destination_Airport FROM Flight GROUP BY Month, Destination_Airport ORDER BY COUNT(*) DESC
,它让我得到了按频率排序的所有月份、Destination_Airport 对,但我不知道如何将其缩减为仅返回每月最受欢迎的机场,仅此而已。提前感谢您的帮助!
解决方案
你在正确的轨道上。然后,您可以使用窗口函数来获得每月的顶部:
SELECT md.*
FROM (SELECT Month, Destination_Airport, COUNT(*) as cnt,
ROW_NUMBER() OVER (PARTITION BY Month ORDER BY COUNT(*) DESC) as seqnum
FROM Flight
GROUP BY Month, Destination_Airport
) md
WHERE seqnum = 1;
推荐阅读
- coq - 从不同类型转换
- rust - 如何运行 rust 项目的示例
- apache-kafka - 卡夫卡我的一些消费者不消费
- google-cloud-spanner - 我可以索引 EXTRACT(从 startDateTime 开始的星期)吗?或者,查询计划器会直接在“startDateTime”上使用索引吗?
- c# - 为什么 AcquireTokenByAuthorizationCode 不返回 RefreshToken
- python-3.x - 如何使用 Telethon 在消息中插入指向用户个人资料或聊天的链接?
- python - 如何在分组后检索数据帧的其余部分并按该分组进行索引
- wordpress - woocommerce rest api:无法通过预检请求
- firebase - Firebase - CoffeeScript 中的云函数
- oracle - oracle使用rownum从表中删除数据