首页 > 解决方案 > 为列中的每个值创建子查询

问题描述

我希望创建一个 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 对,但我不知道如何将其缩减为仅返回每月最受欢迎的机场,仅此而已。提前感谢您的帮助!

标签: sql

解决方案


你在正确的轨道上。然后,您可以使用窗口函数来获得每月的顶部:

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;

推荐阅读