最近接手一个项目,好多报表都要去top10展示,在写sql的时候发现需要一层套一层,一层套一层,至少需要套三层以上;然后就在想,这个sql能不能精简一下?看着更加清晰一些呢?
我们来看一个简单的例子,表数据如下:
需求是看城市用户数的top10
按正常的思路,是先按城市分组统计人数,然后用开窗函数做排名,再然后取排名前10。
通过这个思路写出的sql
SELECT
cityname
,cnt
FROM (
SELECT
cityname
,cnt
,row_number() over(ORDER