MySQL中rank函数的使用
生活随笔
收集整理的這篇文章主要介紹了
MySQL中rank函数的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目來源:牛客sql練習題??對所有員工的薪水按照salary降序進行1-N的排名_牛客題霸_牛客網
題目描述:
有一個薪水表salaries簡況如下:
?對所有員工的薪水按照salary降序進行1-N的排名,要求相同salary并列,且按照emp_no升序排列:
分析:
這道題目考察的是SQL窗口函數(OLAP函數)中用于排序的專用窗口函數用法
下面介紹三種用于進行排序的專用窗口函數:
1、RANK()
? ? 在計算排序時,若存在相同位次,會跳過之后的位次。
? ? 例如,有3條排在第1位時,排序為:1,1,1,4······
2、DENSE_RANK()
? ? 這就是題目中所用到的函數,在計算排序時,若存在相同位次,不會跳過之后的位次。
? ? 例如,有3條排在第1位時,排序為:1,1,1,2······
3、ROW_NUMBER()
? ? 這個函數賦予唯一的連續位次。
????例如,有3條排在第1位時,排序為:1,2,3,4······
窗口函數用法:
<窗口函數> OVER ( [PARTITION BY <列清單> ]
????????????????????????????? ? ORDER BY <排序用列清單> )
*其中[ ]中的內容可以忽略
解答:
select emp_no, salary, dense_rank() over(order by salary desc) as t_rank from salaries order by t_rank asc, emp_no asc;總結
以上是生活随笔為你收集整理的MySQL中rank函数的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Operations-ansible-0
- 下一篇: 刷计算机导论的题用什么软件,计算机导论试