求基于Cities表的KQL查询:返回各州人口Top2城市
获取每个州人口排名前2的城市
原始数据表(Cities)
假设表中包含State(州)、City(城市)、Population(人口)三列,数据如下:
GA Augusta 203953 GA Athens 130873 GA Atlanta 522328 GA Savannah 151227 FL Orlando 328354 FL Tampa 399734 FL Miami 455075 FL Jacksonville 987960
需求
编写KQL查询,返回每个州按人口降序排列的前2个城市。
解决方案
可以通过两种常用方式实现:
方法1:使用partition by分区处理
Cities | partition by State ( sort by Population desc | take 2 ) | sort by State asc, Population desc
- 逻辑:按
State字段分区,每个分区内按人口降序排序后取前2条数据,最后统一按州名升序、人口降序整理结果。
方法2:使用row_number()生成排名筛选
Cities | extend Rank = row_number(partition by State order by Population desc) | where Rank <= 2 | sort by State asc, Population desc | project-away Rank
- 逻辑:为每个州的城市按人口降序生成排名,筛选排名≤2的记录,最后移除排名列并整理结果顺序。
预期查询结果
FL Jacksonville 987960 FL Miami 455075 GA Atlanta 522328 GA Augusta 203953
内容的提问来源于stack exchange,提问作者Eric Russell
相关产品推荐
相关产品推荐

