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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 分析函数,也称为窗口函数,通常被认为仅对数据仓库SQL有用。使用分析函数的查询,基于对数据行的分组来计算总量值。与...
    猫猫_tomluo阅读 3,489评论 3 18
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,961评论 0 13
  • 这一周主要学习了 Hive 的一些基础知识,学习了多个 Hive 窗口函数,虽然感觉这些窗口函数没有实际的应用...
    大石兄阅读 2,959评论 2 8
  • 前面俩个章节我们介绍了窗口函数、滑动窗口函数的概念,接下来我们介绍一下PG支持的原生通用窗口函数,总共11个(9....
    码农大表哥3306阅读 2,415评论 2 3
  • 1. 介绍 普通聚合函数聚合的行集是组,开窗函数聚合的行集是窗口。因此,普通聚合函数每组(Group by)只有一...
    幸运猪x阅读 8,321评论 0 4

友情链接更多精彩内容