MySQL窗口函数 DENSE_RANK函数
生活随笔
收集整理的這篇文章主要介紹了
MySQL窗口函数 DENSE_RANK函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.簡介
? ? ? ? 根據指定條件將某個select查詢結果分為若干個區域,然后對這些區域通過DENSE_RANK函數指定的順序進行排序,圖1加強理解。
?
2.格式
DENSE_RANK() OVER( PARTITION BY expression,expression... ORDER BY <expression>[DESC|ASC],[{,}] )說明:
PARTITION BY 字句將from的結果劃分為多個分區。
ORDER BY 指定DENSE_RANK()函數操作的每個分區。
如果分區當中有兩個或者是兩個以上的列相同,則為它們分配相同的排名。
3.舉例
創建表sales
create table if not exists sales( sales_employee varchar(255) not null, fiscal_year date not null, sale double not null )engine=innodb;并且如下的數據
INSERT INTO `sales` VALUES ('Alice', '2016', '150.00'); INSERT INTO `sales` VALUES ('Alice', '2017', '100.00'); INSERT INTO `sales` VALUES ('Alice', '2018', '200.00'); INSERT INTO `sales` VALUES ('Bob', '2016', '100.00'); INSERT INTO `sales` VALUES ('Bob', '2017', '150.00'); INSERT INTO `sales` VALUES ('Bob', '2018', '200.00'); INSERT INTO `sales` VALUES ('John', '2016', '200.00'); INSERT INTO `sales` VALUES ('John', '2017', '150.00'); INSERT INTO `sales` VALUES ('John', '2018', '250.00');現在通過分區函數DENSE_RANK()函數對按銷售額對銷售人員進行排名,
SELECTsales_employee,fiscal_year,sale,DENSE_RANK() OVER (PARTITION BY fiscal_yearORDER BY sale DESC) as sales_rank FROM sales;結果如下。
詳解:
第一步:PARTITION BY EXPRESS,會使用年度將結果劃分為分區。
第二步:ORDER BY sale DESC ,會按照銷售額對人員進行排序。
?參考文章:
MySQL DENSE_RANK() 函數 | 新手教程 (begtut.com)
總結
以上是生活随笔為你收集整理的MySQL窗口函数 DENSE_RANK函数的全部內容,希望文章能夠幫你解決所遇到的問題。