美图欣赏2022/06/04

窗口函数的基本语法

<窗口函数> OVER ([PARTITION BY <用于分组的列>] ORDER BY <用于排序的列>)

※ []中的内容可以省略

注意:Mysql从8.0版本才开始支持窗口函数

数据导入

DROP TABLE IF EXISTS order_content;
CREATE TABLE order_content(
order_id VARCHAR(8),
user_id VARCHAR(8),
order_price INT,
order_date DATE
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO
order_content (order_id,user_id,order_price,order_date)
VALUE ('o001','u001',800,'2021-06-18')
,('o002','u001',800,'2021-06-19')
,('o003','u001',1000,'2021-06-22')
,('o004','u001',1200,'2021-06-24')
,('o005','u002',400,'2021-06-25')
,('o006','u002',1500,'2021-06-26')
,('o007','u002',2100,'2021-06-28')
,('o008','u003',900,'2021-07-01')
,('o009','u003',700,'2021-07-03')
,('o010','u003',1700,'2021-07-04');

order_content表

1.PERCENT_RANK()函数

PERCENT_RANK()函数用于将每行按照(rank - 1) / (rows - 1)进行计算。其中,rank为RANK()函数产生的序号,rows为当前窗口的记录总行数

PERCENT_RANK()函数返回介于 0 和 1 之间的小数值

SELECT *,PERCENT_RANK() OVER(ORDER BY order_price)AS percent_ranking,RANK() OVER(ORDER BY order_price)AS ranking
FROM order_content;

结果展示:

以第二行的0.111111...为例,它是通过(rank - 1) / (rows - 1)计算得到的,其中rows为表的行数,即10;rank为排名,即2

2.CUME_DIST()函数

CUME_DIST()函数用于返回分组内小于或等于当前rank值的行数/分组内总行数的数据

CUME_DIST()函数的返回值大于0且小于或等于1

SELECT *,CUME_DIST() OVER(ORDER BY order_price)AS _cume_dist,RANK() OVER(ORDER BY order_price)AS ranking
FROM order_content;

结果展示:

以第二行的0.2为例,小于或等于其RANK值2的只有两个数。所以得到2 / 10 = 0.2

该窗口函数的应用场景是查询当前值在总值中大小排序的比例

[Mysql] PERCENT_RANK()函数 | CUME_DIST()函数相关推荐

  1. R语言dplyr包排序及序号函数实战(row_number、ntile、min_rank、dense_rank、percent_rank、cume_dist)

    R语言dplyr包排序及序号函数实战(row_number.ntile.min_rank.dense_rank.percent_rank.cume_dist) 目录 R语言dplyr包排序及序号函数实 ...

  2. 常用MySQL函数存储过程_解析MySQL存储过程、常用函数代码

    mysql存储过程的概念: 存储在数据库当中可以执行特定工作(查询和更新)的一组SQL代码的程序段. mysql函数的概念: 函数是完成特定功能的SQL语句,函数分为内置函数和自定义函数(user-d ...

  3. oracle迁移mysql视图中函数问题,mysql中to_char自定义函数。

    迁移到mysql中会遇到函数迁移问题,我们可以自定义函数 DELIMITER $$ CREATE FUNCTION new_data_report.to_char(Intnumber int) RET ...

  4. mysql 时区与时间函数

    --在mysql中可以直接使用sleep()函数,sysdate函数返回的是执行到当前函数的时间,而now函数返回的是执行sql的时间 mysql> SELECT now(),SYSDATE() ...

  5. mysql存储过程与自定义函数

    2019独角兽企业重金招聘Python工程师标准>>> #mysql存储过程与自定义函数: delimiter $ 1.最简单的存储过程 create procedure test( ...

  6. MySQL 获得当前日期时间 函数

    MYSQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段 format:日期格式 返回系统日期,输出 ...

  7. MYSQL数值运算符和函数用法

    mysql也有数值运算,那么列出常见的函数 ceil() div() floor() mod() power() round() truncate()等等,具体说说MYSQL数值运算符和函数用法. 1 ...

  8. Mysql日期时间Extract函数介绍

    MySQL日期时间Extract函数的优点在于可以选取日期时间的各个部分,从年一直到微秒,让我们对MySQL日期时间的处理更为轻松. MySQL 日期时间 Extract(选取)函数. 1. 选取日期 ...

  9. mysql function加速_MySQL - 函数(FUNCTION)

    about MySQL提供了丰富的内置函数自定义函数. 而我们也对这些函数有所了解,比如聚合函数. 本篇再来了解一些内置函数和自定义函数的编写. 写在前面的话:默认情况下,函数名称和其后的括号之间必须 ...

最新文章

  1. Docker学习(5)——创建私有仓库,为私有仓库添加web界面
  2. 使用Spring Initializer快速创建Spring Boot项目
  3. Netty事件传播机制
  4. 循环嵌套-使用字符串运算直接输出小星星
  5. 使用Fiddler监控网易云笔记客户端向服务器定时发送的sync请求
  6. 怎样去理解@ComponentScan注解
  7. mysql 5.6.21不能选择安装路径_mysql5.6.21服务器安装图解(选择安装和数据目录)
  8. 【Java】关键词strictfp解析
  9. xpath NOT IE
  10. 简哲,请让我的生活简单一点。——批《输入法破局研究——联盟推广》
  11. 浏览器向服务器发送的消息称为,网络是怎样连接之浏览器的探索之旅读书笔记(一)...
  12. eclipse 中使用Git
  13. 十、基于FPGA的PCIE协议介绍(一)
  14. Python—爬取全国城市名称案例(Xpath方法)
  15. Git - git push origin master 报错的解决方法 出现[rejected] master -」 master (non-fast-forward)问题解决
  16. vue 下载Excel 文件
  17. 【OpenStreetMap】任意城市道路数据下载(附带数据解释)
  18. node之手写脚手架
  19. python modis数据拼接_python调用HEG工具批量处理MODIS数据的方法及注意事项
  20. CSDN的markdown不能正常生成lim符号怎么破?

热门文章

  1. matlab使用CVX求解优化问题时,如果变量搜索空间过大,导致求解的数值解相当不准确,通过变量替换,缩小搜索空间
  2. c语言程序设计 a,C语言程序设计试题A
  3. c语言数组编程题及解答,C语言数组编程题及解答
  4. 直播代码Flutter 实现虎牙/斗鱼 弹幕效果
  5. php 超级好用的特殊字符过滤函数
  6. 关于stm32f4xx的片上外设I2C模块用作主模式下BUSY位总是置1的解决方法
  7. jenkins 配置git
  8. gifcam使用缩小内存_GifCam使用方法
  9. Centos7 一键安装WPS
  10. 4.R语言【rehsape2包】介绍、melt( )、cast( )函数、其他使用技巧