dense_rank() 窗口函數:返回的是結果集分區每行的排名,排名值沒有間斷,是連續的排名值
栗子:
sales_employee fiscal_year sale
Alice 2016 150.00
Alice 2017 100.00
Alice 2018 200.00
Bob 2016 100.00
Bob 2017 150.00
Bob 2018 200.00
John 2016 200.00
John 2017 150.00
John 2018 250.00
SQL:
SELECT
sales_employee,fiscal_year,sale,
DENSE_RANK() OVER (PARTITION BY fiscal_year ORDER BY sale DESC) AS sales_rank
FROM
sales;
輸出如下:
sales_employee fiscal_year sale sales_rank
John 2016 200.00 1
Alice 2016 150.00 2
Bob 2016 100.00 3
Bob 2017 150.00 1
John 2017 150.00 1
Alice 2017 100.00 2
John 2018 250.00 1
Alice 2018 200.00 2
Bob 2018 200.00 2
這個栗子用DENSE_RANK() 函數對結果集的每個分區的行進行排名
語法
DENSE_RANK() OVER(
PARTITION BY [col1]
ORDER BY [col2] DESC
)
PARTITION BY按年分區
ORDER BY按銷售額降序
DENSE_RANK()對分區內記錄按指定條件排名