什么是窗口函数?

mysql8.0的版本中,新增了一个窗口函数,用他可以实现很多新的查询方式。窗口函数类似于sun()count()那样的集合函数,但它并不会将多行查询结果合并为一行,而是将结果放回多行中。什么意思呢?就是说窗口函数是不需要group by的。

窗口函数-排名

首先我们创建一个名字为test_2的数据表;

mysql> create table test_2 (name char(200) not null, brcount int(20) not null);
Query OK, 0 rows affected, 1 warning (0.02 sec)mysql>

然后插入几条数据;

mysql> insert into test_2 values ('test1', 10), ('test2', 14), ('test3', 8), ('test4', 99), ('test5', 3);
Query OK, 5 rows affected (0.01 sec)
Records: 5  Duplicates: 0  Warnings: 0mysql>

查看下表中数据:

mysql> select * from test_2;
+-------+---------+
| name  | brcount |
+-------+---------+
| test1 |      10 |
| test2 |      14 |
| test3 |       8 |
| test4 |      99 |
| test5 |       3 |
+-------+---------+
5 rows in set (0.00 sec)mysql>

按照字段brcount从小到大来进行排序,可以利用窗口函数来实现;

mysql> select *, rank() over w1 as 'rand' from test_2 window w1 as (order by brcount);
+-------+---------+------+
| name  | brcount | rand |
+-------+---------+------+
| test5 |       3 |    1 |
| test3 |       8 |    2 |
| test1 |      10 |    3 |
| test2 |      14 |    4 |
| test4 |      99 |    5 |
+-------+---------+------+
5 rows in set (0.01 sec)mysql>

这里创建了名称为w1的窗口函数,规定对brcount字段进行排序,然后在select子句中对窗口函数w1执行rank()方法,将结果输出为rank字段。

RANK()函数为结果集的分区中的每一行分配一个排名。行的等级由一加上前面的等级数指定。

需要注意的是,在这里的windows w1是可选的,如下:

mysql> select *, rank() over w1 as 'rand' from test_2 window w1 as (order by brcount);
+-------+---------+------+
| name  | brcount | rand |
+-------+---------+------+
| test5 |       3 |    1 |
| test3 |       8 |    2 |
| test1 |      10 |    3 |
| test2 |      14 |    4 |
| test4 |      99 |    5 |
+-------+---------+------+
5 rows in set (0.00 sec)mysql>

亦或者查一下各自所占百分比;

mysql> select *, (brcount)/(sum(brcount) over()) as rate from test_2;
+-------+---------+--------+
| name  | brcount | rate   |
+-------+---------+--------+
| test1 |      10 | 0.0746 |
| test2 |      14 | 0.1045 |
| test3 |       8 | 0.0597 |
| test4 |      99 | 0.7388 |
| test5 |       3 | 0.0224 |
+-------+---------+--------+
5 rows in set (0.00 sec)mysql>

至此,本文结束。

更多内容请转至VX公众号 “运维家” ,获取最新文章。

------ “运维家” ------

------ “运维家” ------

------ “运维家” ------

临武县运维工程师培训,温州运维工程师,通达oa实施运维工程师,呼叫中心运维工程师面试
腾讯idc运 维工程师面试,运维工程师samba,运维工程师的行业是什么,
运维工程师的来历,运维工程师好找嘛,运维 工程师出入,运维工程师自学可行

mysql中还有窗口函数?这是什么东西?相关推荐

  1. MySQL中的uuid函数是什么东西

    MySQL的uuid这个函数.简要介绍一下. 用法 简单看到,这个值,每次执行都是不同的. 生成规则 第1 2 3 段是与时间有关的. time_low.time_mid.time_high_and_ ...

  2. mysql over rank_sql - MySQL中的Rank函数

    sql - MySQL中的Rank函数 我需要找出客户的排名. 在这里,我为我的要求添加了相应的ANSI标准SQL查询. 请帮我转换为MySQL. SELECT RANK() OVER (PARTIT ...

  3. MySQL中的sum函数用法实例详解

    今天分享一下mysql中的sum函数使用.该函数已经成为大家操作mysql数据库中时常用到的一个函数,这个函数统计满足条件行中指定列的和,想必肯定大家都知道了,本身就没什么讲头了,这篇文章主要是通过几 ...

  4. MySql中管理百万级要注意些什么东西(转载)

    一.我们可以且应该优化什么? 硬件 操作系统/软件库 SQL服务器(设置和查询) 应 用编程接口(API) 应用程序 二.优化硬件 如果你需要庞大的数据库表 (>2G),你应该考虑使用64位的硬 ...

  5. mysql中的float_mysql里float是什么东西

    展开全部 今天做实验,本来以前都已经做得差不多了的,可突然U盘一下子坏掉,计算机无法识62616964757a686964616fe78988e69d8331333335336537别,驱动重装没用, ...

  6. sql查询三级菜单分类_SQL面试50题——思路解答与分类整理(中)窗口函数与子查询...

    让我们每天都进步一点点 题目快速查找索引 阅读指南 上篇:SQL面试50题--思路解答与分类整理(上)聚合函数与表连接 [第一部分]聚合函数(sum/avg/count/min/max) [第二部分] ...

  7. mysql中的%_mysql入门

    MySQL 数据库 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优先: 可存储大量数据: 方便检索: 保持数据的一致性.完整性: 安全,可共享: ...

  8. 求求你,别在 MySQL 中使用 UTF-8了!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:blog.csdn.net/qq_39390545/ ...

  9. 为什么不建议在 MySQL 中使用 UTF-8?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 _陈哈哈|https://sourl.cn/kKbzpH 记得去年 ...

最新文章

  1. 深度学习:Opencv的BlobfromImage如何工作
  2. java中磁盘和内存的相互,Java:有没有磁盘和内存一样快的情况?
  3. python标准类型内建模块_Python内建模块struct实例详解
  4. PhotoShop更改图片背景色
  5. [数据结构-严蔚敏版]P64循环队列-队列的顺序存储结构
  6. php 输出01,php基础01_thinkphp输出Hello World-Go语言中文社区
  7. 关于 QImage::Format_Mono
  8. 三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较
  9. python 柱状图设置样式_python数据可视化之图表样式调整(三)
  10. 定时器开始时延时了十几秒_第六章--系统滴答定时器
  11. 小米路由器4a刷第三方固件_小米路由器4A的断网问题初探
  12. vue 创建图片坐标点_Vue Echarts 显示地图且根据坐标设置标注点
  13. Servlet是什么?有什么用?
  14. 大学物理复习5-角动量定理+角动量守恒定律
  15. 微信小程序:2022虎年全新头像框制作
  16. 揭晓网站建设对于企业发展的重要作用
  17. 业务流程规范的战争兴起:XPDL、BPEL、BPDM
  18. 机器学习数据集划分留出法,留一法,交叉法,自助法
  19. php rsa 模数 指数,密码:使用模数和指数生成RSA私钥
  20. 三种迭代法解方程组(雅可比Jacobi、高斯-赛德尔Gaisi_saideer、逐次超松弛SOR)

热门文章

  1. 备忘录这三个字怎么改名字_苹果语言备忘录怎么改名字
  2. Codevs 2627 村村通
  3. ASP.Net Core Web API Swagger 版本控制与注释
  4. 太空舱项目--云原生故障模拟器
  5. 自媒体运营技巧:如何成功申请今日头条号?
  6. autoware花屏重影问题
  7. 魅蓝note 做Android真机调试
  8. Mybatis的复习(一)
  9. 显示器的分辨率和图像分辨率
  10. mars3d App开发——判定导航路线或者POI点是否被收藏