在排序时考虑到每行的前后关系,并根据这些关系进行排序。这使得在排序结果集时可以得到更精确、准确的排序。
row_number() | 例如90、 80、80、70排名后为1、2、3、4 |
rank() | 例如90、 80、80、70排名后为1、2、2、4 |
dense_rank() | 例如90、 80、80、70排名后为1、2、2、3 |
例:对成绩进行排名
SELECT
company as '公司',
student as '姓名',
subject as '科目',
achievement as '成绩',
dense_rank() OVER(
PARTITION BY company,subject
ORDER BY achievement
) AS"排名"
FROM
window_function_rank
GROUP BY
company,
subject,
student
排名后