Java | MySQL 分布函数、前后函数你认识吗?

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

你可能感兴趣的:(Java | MySQL 分布函数、前后函数你认识吗?)