MySQL实现常用分析函数

MySQL实现常用分析函数,第1张

分别在 MySQL5.7.25-log 和 8.0.16 环境中实现类似Oracle的分析函数(8.0版本中已支持,直接使用即可)。

一、创建测试数据

二、row_number() over()

三、rank() over()

四、dense_rank() over()

五、lag() over()

六、lead() over()

七、待补充

例1:不分组,全部数据添加序列号,类Oracle 的rownum伪列

例2:先按roomid分组,再按照deviceid,counter排序,类Oracle 的row_number() OVER(PARTITION BY ORDER BY )

例1:不分组,全部数据按 roomid 排序,再添加序号,类Oracle 的rank() OVER(ORDER BY)

例2:先按roomid分组,再按deviceid排序,类Oracle 的rank() OVER(PARTITION BY ORDER BY)

例1:不分组,全部数据按roomid排序,再添加序号,类Oracle 的dense_rank() OVER(ORDER BY)

例2:先按roomid分组,再按deviceid排序,类Oracle 的dense_rank() OVER(PARTITION BY ORDER BY)

例1:不分组,全部数据按roomid,deviceid升序排序,类Oracle 的lag() OVER(ORDER BY)

例2:先按roomid分组,再按roomid,deviceid排序,类Oracle 的lag() OVER(PARTITION BY ORDER BY)

例1:不分组,全部数据按roomid,deviceid,counter升序排序,类Oracle 的lead() OVER(ORDER BY)

例2:先按roomid分组,再按deviceid,counter排序,类Oracle 的lead() OVER(PARTITION BY ORDER BY)

用来测试MySQL函数性能的。

benchmark函数有两个参数,第一个是执行次数,第二个是要测试的函数或者表达式,

返回的结果始终是0,

你可以看到执行时间用于评估mysql的性能

LEFT()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。

下面是LEFT()函数的语法 -

INTERVAL关键字

INTERVAL关键字可以用于计算时间间隔,可以有以下用法。

1,直接计算时间间隔。

例1:查询当前时间之前2个小时的日期:

MySQL DATE_ADD() 函数

定义和用法

DATE_ADD() 函数向日期添加指定的时间间隔。

语法

DATE_ADD(date,INTERVAL expr type)

我们希望向 "OrderDate" 添加 2 天

DATE_ADD(OrderDate,INTERVAL 2 DAY)

CAST函数 将任何类型的值转换为具有指定类型的值 https://www.yiibai.com/mysql/cast.html

rand() 的取值范围为[0,1)

tinyint字段举例 unsigned 字段的取值范围是0-255,而 signed 的范围是-128 - 127

SECOND


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5903659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存