如何通过SQL查询实现计算前top n%的数据?
- 内容介绍
- 文章标签
- 相关推荐
本文共计800个文字,预计阅读时间需要4分钟。
背景+实际工作中经常遇到的需求top10或top10%的需求,下面针对这些情况做一个小小的总结。
实现代码+先来说说top+n这种常见情况,这是比较常见的排序需求,可以使用窗口函数解决。常见的窗口函数有RANK、DENSE_RANK、ROW_NUMBER等,具体使用哪个取决于需求。
1. RANK():当有并列时,并列的记录会分配相同的排名,后续的排名会跳过。
2.DENSE_RANK():与RANK()类似,但是当有并列时,并列的记录会分配相同的排名,后续的排名不会跳过。
3.ROW_NUMBER():按照记录的顺序分配唯一的序号,不受并列影响。
以下是一个使用RANK()函数的示例代码:
sql
SELECT column1, column2, RANK() OVER (ORDER BY column2 DESC) AS rankFROM table_name;在这个例子中,根据column2的降序排列,返回每条记录的排名。
- 背景
实际工作中经常遇见求top10或者top10%此类的需求,下面针对这些情况做一个小小的总结。
本文共计800个文字,预计阅读时间需要4分钟。
背景+实际工作中经常遇到的需求top10或top10%的需求,下面针对这些情况做一个小小的总结。
实现代码+先来说说top+n这种常见情况,这是比较常见的排序需求,可以使用窗口函数解决。常见的窗口函数有RANK、DENSE_RANK、ROW_NUMBER等,具体使用哪个取决于需求。
1. RANK():当有并列时,并列的记录会分配相同的排名,后续的排名会跳过。
2.DENSE_RANK():与RANK()类似,但是当有并列时,并列的记录会分配相同的排名,后续的排名不会跳过。
3.ROW_NUMBER():按照记录的顺序分配唯一的序号,不受并列影响。
以下是一个使用RANK()函数的示例代码:
sql
SELECT column1, column2, RANK() OVER (ORDER BY column2 DESC) AS rankFROM table_name;在这个例子中,根据column2的降序排列,返回每条记录的排名。
- 背景
实际工作中经常遇见求top10或者top10%此类的需求,下面针对这些情况做一个小小的总结。

