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函数相关推荐

  1. MySQL窗口函数 OVER()函数介绍

    前期准备的数据 # 创建数据库 create database if not exists shopping charset utf8; # 选择数据库 use shopping; # 创建产品表 c ...

  2. MySQL 序号(排序)函数:row_number() 、rank() 、 dense_rank()、ntile()

    前言:以下函数都是MySQL8.0版本才支持,使用前请确认当前MySQL版本,详情可百度MySQL8.0新特性-窗口函数-序列函数 1.测试表内容 MySQL版本:8.0.11 示例: 2.row_n ...

  3. 【MySQL数据库】MySQL聚合函数、时间函数、日期函数、窗口函数等函数的使用

    目 前言 MySQL函数 聚合函数 数学函数 字符串函数 日期函数 控制流函数 窗口函数 序号函数 开窗聚合函数- SUM,AVG,MIN,MAX 前后函数 lag lead 首尾函数first_va ...

  4. MySQL DENSE_RANK函数简介

    MySQL DENSE_RANK函数简介 DENSE_RANK()是一个窗口函数,它为分区或结果集中的每一行分配排名,而排名值没有间隙. 语法: DENSE_RANK() OVER (PARTITIO ...

  5. [Mysql] RANK()函数 | ROW_NUMBER()函数 | DENSE_RANK()函数

    窗口函数的基本语法 <窗口函数> OVER ([PARTITION BY <用于分组的列>] ORDER BY <用于排序的列>) ※ []中的内容可以省略 注意: ...

  6. mysql窗口函数_MySQL8.0窗口函数入门实践及总结

    前言 MySQL8.0之前,做数据排名统计等相当痛苦,因为没有像Oracle.SQL SERVER .PostgreSQL等其他数据库那样的窗口函数.但随着MySQL8.0中新增了窗口函数之后,针对这 ...

  7. MySQL窗口函数简介

    原文地址:https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_last-value 译 ...

  8. MySQL之——常用函数汇总

    目录 1.MySQL字符串拼接函数 2.MySQL字符串截取函数 3.MySQL字符串长度函数char_length().length() 4.MySQL大小写转换函数 5.MySQL之case wh ...

  9. MySQL:开窗函数

    当查询条件需要用到复杂子查询时,聚合函数操作起来非常麻烦,因此使用开窗函数能够轻松实现. 注意:在Oracle中称为分析函数. 在MySQL中称为开窗函数,使用于MySQL8.0以上版本,sql se ...

  10. MYSQL窗口函数用法及区别

    本博客转自:https://blog.csdn.net/weixin_34384915/article/details/87551597 窗口函数(OLAP 实时分析处理函数) ,可以一般聚合函数无法 ...

最新文章

  1. 网站真分页js代码该怎么写?
  2. MapReduce基础开发之四参数传递
  3. set,env和export命令显示shell变量其区别,与环境变量扫盲(一)
  4. html overflow隐藏滚动条,css 之内容溢出滚动,隐藏滚动条
  5. matlab 二维高斯滤波 傅里叶_光电图像处理 | 傅里叶变换(二)
  6. 函数计算FC让游戏群采集营销数据滴水不漏
  7. MySQL日期时间函数大全(转)
  8. 活动页面html设计,活动查看页面.html
  9. 带你学 Redis:Redis简介(一)
  10. (已解决) centos6.5 yum源 失效 The whole CentOS 6 is dead and shouldn’t be used anywhere at all
  11. 软考中级【数据库系统工程师】第0章:如何自学备考,考试介绍考什么,备考教材,上午和下午的体型分数分布,备考课程链接,个人备考感谢
  12. SugarNMS 工业交换机网管软件
  13. 如何快速成为数据分析师?
  14. 信息可视化图表设计指南
  15. 如果你要补充益生菌 ——益生菌补充、个体化、定植指南
  16. 不同操作系统图片显示发生颠倒,linux ubuntu win7 win10
  17. Arduino IDE+_Attiny13/85实践(一) IED环境配置
  18. accept()使用
  19. AltiumDesigner工具使用
  20. 问题解决:网上导入git项目,各种报错

热门文章

  1. 短轮询和长轮询的区别到底是什么
  2. 腾讯地图路线规划 vue
  3. 指纹识别技术未来发展趋势
  4. Monkey log 分析
  5. webserver的使用
  6. 采样准则(时间采样与采样频率)的选取
  7. oracle 添加表权限不足,oracle 创建表空间报权限不足,引发的问题如下 | 学步园...
  8. 怎么使用JavaScript进行进制…
  9. easyui-filebox清空方法扩展自TextBox
  10. BeyondCompare4完美“破解“