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)

如果expr为null,则返回1,否则返回0

根isnull类似,expr1不为null的情况下,返回expr1,返回expr2

nullif和ifnull完全不同,它表示如果两个表达式相同,则返回null,否则返回expr1的值

个人感觉应该叫null if equals

发音是core or less,英文的意思是联合/合并,在mysql中的用途是返回第一个不是null的值

只有两个参数的情况下,相当于ifnull


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

原文地址:https://www.54852.com/zaji/7128626.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存