MySQL中窗口函数的使用

MySQL中窗口函数的使用,第1张

MySQL的窗口函数最主要作用是对数据进行分组 *** 作(可以进行分组排序,求TopN,移动平均,聚合计算等),也就是相当于说在当前的详细级别视图里,对更低级别的数据进行计算呈现(可以与Tableau的表计算函数进行对比学习),比如说目前的表格是全国数据,但是要对不同省份的数据进行分组计算,这个时候使用窗口函数就会很方便。

在MySQL中,窗口函数要在8.0版本之后才能使用,如果是低版本的话,只能使用设置变量的方式完成以上内容的实现,设置变量在逻辑上会比窗口函数更加难以理解和使用,使用窗口函数可以大大的提高效率。

在很多SQL的教程中,说到窗口函数的时候,都只是说窗口函数的排序优势而已,但是在实际工作中,其用处远远不止这些。

以下为窗口函数的情况:

窗口在工作列显示:每打开一个新窗口时会自动显示在

Windows

任务栏。停用该选项后,当退出

Navicat

主窗口时,所有窗口(例如:表、查询)将会关闭。需要注意的是,需要重新启动

Navicat

才生效。

允许重复打开表单:勾选此选项,用户可以把已选择的窗口重复打开。

允许重复运行

Navicat:取消勾选这个项目,意味着点击

Navicat

快捷方式将会重新启动正在运行的

Navicat,而不会运行一个新的

Navicat。

点击时刷新:每当点击对象时便自动刷新对象列表。

显示函数向导:当创建新的查询或进程时显示函数向导。

在关闭前提示保存新建的查询或设置文件:勾选此选项,Navicat

将会在每次离开相关子窗口时提示是否保存新的查询或设置文件。

接上一篇,这一篇主要介绍三类窗口函数,分布函数、前后函数和头尾函数。

【分布函数】

PERCENT_RANK基于RANK()函数的排序结果,percent_ranks列按照公式(rank-1) / (rows-1)带入rank值(row_num列)和rows值,其中,rank为RANK()函数产生的序号,rows为当前窗口的记录总行数。

CUME_DIST,分组内小于等于当前rank值的行数/分组内总行数,这个函数比percen_rank使用场景更多。可以用于计算大于等于或小于等于当前订单金额的订单比例有多少。

【前后函数】

分区中位于当前行前n行(LAG)或后n行(LEAD)的记录值。这两个函数在实际中还是有使用场景,比如要查询上一个订单距离当前订单的时间间隔,或者本条订单距离下一条订单的时间间隔。

如果要计算距离上一条订单的天数,只需要增加一列,用DATEDIFF函数把两个日期相减就可以了。如果是第一条订单,就会返回空值。

【头尾函数】

头尾函数FIRST_VAL和LAST_VAL函数,用来得到分区中的第一个或最后一个指定参数的值。可以用来查询每个用户第一次和最后一次的订单数据信息,然后就行比较 *** 作。需要注意的是,最后一条订单时间是基于当前订单时间来看的,所有是等于当前订单时间。

End

◆ PowerBI开场白

◆ Python高德地图可视化

◆ Python不规则条形图


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存