MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
今天来讲解下MySQL 分布函数、前后函数,让不懂得同学对其有个简单的认识,要是有持不同看法的或是想要补充的同学,也欢迎评论区讨论哦~
今日详解内容包括:分布函数、前后函数。
分布函数
(1)应用场景:快速查看某个记录所归属的组内的比例
(2)分布函数分类及基础语法
(3)两种分布函数的介绍
percent_rank() 函数
显示的结果,每行按照如下公式进行计算: (rank-1)/(rows-1)
rank 为 RANK() 函数产生的序号,rows 为当前窗口的记录总行数
对于重复值,取重复值的第一行记录的位置
cume_dist() 函数
显示的结果,每行按照如下公式进行计算:rank/rows
rank 为 RANK() 函数产生的序号,rows 为当前窗口的记录总行数
对于重复值,取重复值的最后一行记录的位置
(4)实例比较两种分布函数
数据结果:
前后函数
(1)应用场景
常用于计算时间序列数据,计算时间间隔,如会员每次购买商品的时间间隔等
当前行与前 n 行或者后 n 行的值
若有分区,分区值则所有分区的前后 n 行的值
(2)前后函数分类及基础语法
(3)两种前后函数的介绍
lag(字段,N) 函数,指当前行的前 N 行的对应字段值
lead(字段,N) 函数,指当前行的后 N 行的对应字段值
(4)实例比较前后函数
数据结果:
结果解析:
由 lag(t1.dimDateID,1) 产生的数列 t1,观察红线连接的两个数字,显示 8 号客户,最新购买商品的时间为 20170607,以此时间点向前查询,上 1 次购买商品的时间为 20170603
由 lag(t1.dimDateID,2)产生的数列 t2,观察红线连接的两个数字,显示 9 号客户,最新购买商品的时间为 20170615,以此时间点向前查询,上 2 次购买商品的时间为 20170602
由 lead(t1.dimDateID,1) 产生的数列 t3,观察红线连接的两个数字,显示 9 号客户,以 20170613 向后查询,下 1 次购买商品的时间为 20170615
好了,以上就是今天分享的MySQL 分布函数、前后函数相关知识了,希望能给大家带来一定帮助!
专注于Java架构师技术分享,撩我免费送Java全套架构师晋级资料
(Java架构师交流企Q鹅裙*/*:445*-*820*-*908)