SQLSERVER中RANK OVER(PARTITION BY)的用法
程序员文章站
2022-06-15 23:11:02
查询出每个班级成绩是第一名的同学SELECT * FROM (SELECT s.name,s.class,RANK() OVER(PARTITION BY s.class ORDER BY s.score DESC)S FROM students s)AS S WHERE S=1其中RANK()和DENSE_RANK()的区别就是并列第一名的时候,接下来这个同学是第二名还是第三名的区别SELECT s.name,s.class,DENSE_RANK() OVER(PARTITION ....
查询出每个班级成绩是第一名的同学
SELECT * FROM
(SELECT s.name,s.class,RANK() OVER(PARTITION BY s.class ORDER BY s.score DESC)S FROM students s)AS S
WHERE S=1
其中 RANK()和DENSE_RANK()的区别就是并列第一名的时候,接下来这个同学是第二名还是第三名的区别
SELECT s.name,s.class,DENSE_RANK() OVER(PARTITION BY s.class ORDER BY s.score DESC) S FROM students s
那么和GROUP BY有什么区别呢?
SELECT s.class,COUNT(1) FROM students s GROUP BY s.class
GROUP BY 一般只是分组,和聚合函数一起使用,而OVER(PARTITION BY)还有一些高级功能
如果把RANK()换成是ROW_NUMBER()会是什么个情况呢?
SELECT s.class,s.score,s.name,row_number() over(partition by s.class order by s.score desc)
FROM students s
将不会出现并列第一的排名,这个需要注意!
本文地址:https://blog.csdn.net/weixin_41896770/article/details/107625845
推荐阅读
-
sqlserver 存储过程中If Else的用法实例
-
SQL中distinct 和 row_number() over() 的区别及用法
-
SQLSERVER 2005的ROW_NUMBER、RANK、DENSE_RANK的用法
-
详解SqlServer数据库中Substring函数的用法
-
Oracle中rank,over partition函数的使用方法
-
sqlserver中drop、truncate和delete语句的用法
-
SqlServer 中 Like 带参 与 In带参的用法详解
-
SqlServer中Substring函数的用法
-
Oracle查询中OVER (PARTITION BY ..)用法
-
SQLserver中的declare变量用法