mysql 排序开窗函数_MySQL中实现开窗函数
一、概述
row_number是数据库中常用的一个开窗函数,可以实现数据分区编号的功能,然而MySQL并不支持开窗函数。本文介绍了在MySQL中实现开窗函数的方法。
二、经典开窗函数
首先准备基础数据,如下入所示。
在hive或oracle中使用经典开窗函数实现数据分组编号的方法如下。
select name,
age,
row_number() over (partition by age order by name) as rank
from student
但是,MySQL中并不支持上述开窗函数。
三、MySQL实现开窗函数的方法
select @row_number:=
case when @previous_age = a.age then @row_number + 1
else 1
end as num,
`name`,
age,
@previous_age:=a.age
from
a, (select @previous_age:=0, @row_number:=0) as b
order by age,`name`
其中表a为上述的学生年龄表。
MySQL允许用户自定义变量,[email protected]_name,赋值方式为“:=”,并支持基本数学计算,例如,@row_number:=0表示定义变量row_number并赋值为0,@row_number + 1 表示row_number的值加1。
下面分析分组编号的执行过程。a表按照age和name排序,@[email protected]_age的初始值为0,执行过程,逐一和当前记录的age比较,[email protected]_age=a.age,说明当前记录和前面的记录是同一个年龄,那么将row_number加1;[email protected]_age != a.age,说明当前记录是一个新的年龄,那么将row_number赋值为1。所有数据扫描完成后,也就完成了分组编号。
mysql 排序开窗函数_MySQL中实现开窗函数相关推荐
- mysql空值判断函数_MySQL中的ifnull()函数判断空值
我们知道,在不同的数据库引擎中,内置函数的实现.命名都是存在差异的,如果经常切换使用这几个数据库引擎的话,很容易会将这些函数弄混淆. 比如说判断空值的函数,在Oracle中是NVL()函数.NVL2( ...
- mysql中常用的sql函数_Mysql中的常用函数:
Mysql中的常用函数: 1.字符串函数: (1).合并字符串 concat():// concat('M','y',"SQL",'5.5');== MySQL5.5//当传入的参 ...
- mysqlsql常用函数_MySQL中的常用函数
在MySQL中,函数不仅可以出现在select语句及其子句中,而且还可以出现在update.delete语句中. 常用的函数有: 1. 字符串函数:主要用于处理字符串. 2. 数值函数:主要用于处理数 ...
- mysql排序规则错误_MySQL中“非法混合排序规则”错误的疑难解答
阿波罗的战车 更改字符串的一个(或两者)的排序规则以使它们匹配,或者添加一个COLLATE从句到你的表情.这"校对"到底是什么?如下文所述字符集和排序规则:A 字符集是一组符号和编 ...
- mysql 修改这段长度_MySQL中使用group_concat()函数数据被截取(有默认长度限制),谨慎!...
最近在工作中遇到一个问题: 我们系统的一些逻辑处理是用存储过程实现的,但是有一天客服反馈说订单下单失败,查了下单牵扯到的产品基础资源,没有问题. 下单的存储过程中有这样两句代码: 1 declare ...
- mysql输出max函数_MySQL中的max()函数使用教程
MySQL的max()函数是用来找出一个记录集中的最大值记录. 要了解MAX功能考虑的EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl ...
- mysql sleep详解_MySQL中的sleep函数介绍
MySQL数据库中有一个不太常用但便于进行某些调试的函数:sleep(),今天我们就来介绍一下这个函数的用法. 首先,看看官网对于函数的定义: SLEEP(duration) Sleeps (paus ...
- mysql中的split函数_mysql中的split函数
mysql中没有字符串的分割函数,而最近在工作中,想用到这个功能,所以就在网上找了下,终于在csdn发现一个好方法.原帖的地址: 这里摘抄两个函数: DELIMITER $$ CREATE DEFIN ...
- mysql常用转换函数_MySQL中常用转换函数介绍
Cast函数:CONVERT函数. 用法:CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name). ...
最新文章
- GPT3后可考虑的方向-知识推理与决策任务及多模态的信息处理
- java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...
- ubuntu oracle 10g 安装,Ubuntu 12.04 安装Oracle 10g 全过程(完美)及问题解决办法
- JAVA微信开发:[17]如何获取所有关注用户
- 前端框架开始学习Vue(一)
- zabbix 2.2节点批量安装
- Apache设置用户权限(2个域名。一个能访问全部文件,一个只能访问指定文件)...
- GPGGA \ GPRMC 格式解析
- 教你怎么学习arcgis软件①
- H265分辨率解码概述
- Hit Refresh读书摘要
- mysql启动服务报Found option without preceding group in config file
- ubuntu mysql mysqldb_告诉你在Ubuntu上安装MySQLdb的方法及命令
- 日有所思(5)——校正装置的理解和设计
- Excel 多列条件查找
- Halting Problem的讨论
- 泛型及其使用、Stream的方法(Java小白进阶day17)
- 浅入浅出Javac编译原理——爪哇岛探险(1)
- Prometheus时序数据库-报警的计算 及 Prometheus时序数据库-数据的查询
- 计算机图形学:详解法线与法线贴图原理
热门文章
- web前端学习笔记——JQuery
- 腾达fh450虚拟服务器,腾达(Tenda)FH450与FH451与F450与F451无线路由器设置上网
- MFC子线程中调用updatedata()函数报错解决方法
- java 插件11.45.2.14_IntelliJ IDEA 2020.2.4款 神级超级牛逼插件推荐
- Lombok Builder模式创建对象
- office E5自动订阅程序
- Java::拼图小游戏::
- jmeter断言操作——响应断言
- jmeter断言(响应断言)
- App识别微信小程序二维码、太阳码调研