mysql 8.0 窗口函数:cume_dist,percent_rank介绍

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

MySQL 8.0 引入的窗口函数,本节主要介绍row_number,cume_dist,percent_rank

row_number,cume_dist,percent_rank

  1. row_number():显示行号
  2. cume_dist:计算某个值在一组有序的数据中累计的分布

     计算结果为相对位置/总行数,返回值为(0,1]
    注意:对于重复值,计算的时候,取重复值的最后一行的位置
  3. percent_rank:和cume_dist 的不同点在于计算分布结果的方法
    计算方法为(相对位置-1)/(总行数-1)

    注意:对于重复值,计算的时候,取重复值的第一行的位
    
root@my3308.sock-8.0.11>[test]>select ROW_NUMBER() OVER w AS 'row_number', 
  c1, 
  CUME_DIST()  OVER w AS 'cume_dist',PERCENT_RANK() OVER w AS 'percent_rank'  
  from x window w as (order by c1);
+------------+------+-----------+---------------------+
| row_number | c1   | cume_dist | percent_rank        |
+------------+------+-----------+---------------------+
|          1 |    1 |     0.125 |                   0 |
|          2 |    7 |     0.375 | 0.14285714285714285 |
|          3 |    7 |     0.375 | 0.14285714285714285 |
|          4 |   10 |     0.625 | 0.42857142857142855 |
|          5 |   10 |     0.625 | 0.42857142857142855 |
|          6 |   11 |      0.75 |  0.7142857142857143 |
|          7 |   24 |         1 |  0.8571428571428571 |
|          8 |   24 |         1 |  0.8571428571428571 |
+------------+------+-----------+---------------------+
8 rows in set (0.00 sec)

#cume_dist
root@my3308.sock-8.0.11>[test]>select 1/8 as 'cume_dist_c1=1';
+----------------+
| cume_dist_c1-1 |
+----------------+
|         0.1250 |
+----------------+
1 row in set (0.00 sec)

root@my3308.sock-8.0.11>[test]>select 5/8 as 'cume_dist_c1=10';
+-----------------+
| cume_dist_c1-10 |
+-----------------+
|          0.6250 |
+-----------------+
1 row in set (0.00 sec)

#percent_rank
root@my3308.sock-8.0.11>[test]>select (2-1)/(8-1) as 'percent_rank-c1=7';
+-------------------+
| percent_rank-c1-7 |
+-------------------+
|            0.1429 |
+-------------------+
1 row in set (0.00 sec)

root@my3308.sock-8.0.11>[test]>select (7-1)/(8-1) as 'percent_rank-c1=24';
+--------------------+
| percent_rank-c1=24 |
+--------------------+
|             0.8571 |
+--------------------+
1 row in set (0.00 sec)
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
|
4月前
|
关系型数据库 MySQL 数据挖掘
MySQL窗口函数:原理和使用
MySQL窗口函数:原理和使用
|
4月前
|
关系型数据库 MySQL 数据挖掘
MySQL窗口函数详解(概念+练习+实战)
MySQL窗口函数详解(概念+练习+实战)
796 1
|
4月前
|
关系型数据库 MySQL
MYSQL 窗口函数
MYSQL 窗口函数
|
4月前
|
关系型数据库 MySQL 数据挖掘
MySQL 8窗口函数详解:高效数据处理的必备技能
MySQL 8窗口函数详解:高效数据处理的必备技能
121 3
|
4月前
|
关系型数据库 MySQL Serverless
【随手记】MySQL窗口函数计算累加和
【随手记】MySQL窗口函数计算累加和
300 0
|
5月前
|
SQL Oracle 关系型数据库
MySQL窗口函数怎么用
这段内容介绍了如何使用窗口函数(Window Function)在 MySQL 8.x 中进行更高效、简洁的数据分析和计算。窗口函数允许我们在查询结果集的特定窗口(或分区)内执行计算,如聚合、排序和行号生成。文章以一个复杂的 SQL 查询作为示例,展示了如何使用窗口函数简化这个计算排名的过程。
|
11月前
|
关系型数据库 MySQL
MySQL8.0新特性之窗口函数学习
MySQL8.0新特性之窗口函数学习
137 0
|
SQL 数据挖掘 关系型数据库
MySQL8新特性窗口函数详解
MySQL8新特性窗口函数详解
247 0
|
数据库
Mysql8.0习题系列(八):窗口函数(一篇学会rank、dense_rank、row_number使用,超详细~)
Mysql8.0习题系列(八):窗口函数(一篇学会rank、dense_rank、row_number使用,超详细~)