日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL窗口函数 DENSE_RANK函数

發(fā)布時(shí)間:2023/12/18 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。