MySQL窗口函数 DENSE_RANK函数
生活随笔
收集整理的這篇文章主要介紹了
MySQL窗口函数 DENSE_RANK函数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.簡介
? ? ? ? 根據(jù)指定條件將某個(gè)select查詢結(jié)果分為若干個(gè)區(qū)域,然后對(duì)這些區(qū)域通過DENSE_RANK函數(shù)指定的順序進(jìn)行排序,圖1加強(qiáng)理解。
?
2.格式
DENSE_RANK() OVER( PARTITION BY expression,expression... ORDER BY <expression>[DESC|ASC],[{,}] )說明:
PARTITION BY 字句將from的結(jié)果劃分為多個(gè)分區(qū)。
ORDER BY 指定DENSE_RANK()函數(shù)操作的每個(gè)分區(qū)。
如果分區(qū)當(dāng)中有兩個(gè)或者是兩個(gè)以上的列相同,則為它們分配相同的排名。
3.舉例
創(chuàng)建表sales
create table if not exists sales( sales_employee varchar(255) not null, fiscal_year date not null, sale double not null )engine=innodb;并且如下的數(shù)據(jù)
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');現(xiàn)在通過分區(qū)函數(shù)DENSE_RANK()函數(shù)對(duì)按銷售額對(duì)銷售人員進(jìn)行排名,
SELECTsales_employee,fiscal_year,sale,DENSE_RANK() OVER (PARTITION BY fiscal_yearORDER BY sale DESC) as sales_rank FROM sales;結(jié)果如下。
詳解:
第一步:PARTITION BY EXPRESS,會(huì)使用年度將結(jié)果劃分為分區(qū)。
第二步:ORDER BY sale DESC ,會(huì)按照銷售額對(duì)人員進(jìn)行排序。
?參考文章:
MySQL DENSE_RANK() 函數(shù) | 新手教程 (begtut.com)
總結(jié)
以上是生活随笔為你收集整理的MySQL窗口函数 DENSE_RANK函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VBS删除文件
- 下一篇: linux cmake编译源码,linu