0
点赞
收藏
分享

微信扫一扫

Linux 超级漂亮的 Shell

请添加图片描述

请添加图片描述

分析函数的点点滴滴

1.什么是分析函数:

👉:传送门💖分析函数💖

1.1统计分析函数略解

👉:传送门💖统计分析函数💖

1.2.排序分析函数

👉:传送门💖排序分析函数💖

1.3 开窗函数 ROW 与 RANGE

👉:传送门💖开窗函数 ROW 与 RANGE💖

1.4 统计分析函数详解

👉:传送门💖统计分析函数💖

1.5 不使用order by时

👉:传送门💖不使用order by时💖

1.6 开窗函数与聚合函数

先进行聚合函数,再进行开窗函数

select deptno,
	   sum(count(empno)) over(order by count(empno) 
       rows between unbounded preceding and current row)
from emp t group by deptno;
  • 1.会先进行聚合函数
select deptno,count(empno) from emp group by deptno order by count(empno)

请添加图片描述

  • 2.再进行开窗函数
    • 下图中的结果就是在上图中的结果的基础上进行计算,3,3+6=9,9+6=15
# 开窗函数里面的内容,需要在聚合函数得到的结果的基础上进行
# 如聚合函数中只有deptno和count(empno)
select deptno,
	   sum(count(empno)) over(order by count(empno) 
       rows between unbounded preceding and current row)
from emp t group by deptno;

在这里插入图片描述

2. 偏移分析函数 lag()与lead()用法

  • lag() 的使用示例
select e.*,lag(sal) over() from emp e;
# 由下图,显然lag(sal)中有缺省值,为lag(sal,1,null)
  • 代码效果及重点标注如下图所示:
    在这里插入图片描述

  • lead() 的使用示例

select e.*,lead(sal,2,null) over() from emp e;
  • 代码效果及重点标注如下图所示:
    在这里插入图片描述
select e.*,lead(sal,1,null) over(partition by deptno) from emp e;
# 加了分区(分组),所以lead会在组内偏移
  • 代码效果及重点标注如下图所示:
    在这里插入图片描述
  • MySQL可以在原始数据上还用lag()lead(),Oracle需要在over()中加入内容,如partition byorder by
Oracle:select e.*,lead(sal,1,null) over(order by empno) from emp e;

在这里插入图片描述

Oracle:select e.*,lead(sal,1,null) over(partition by job order by sal) from emp e;

在这里插入图片描述

3. mysql低版本怎么实现分组排序:row_number()为例

3.1 原因:mysql8 版本才支持 over partition by 函数

3.2 解决方法:

set @rownum = 0;   -- @rownum自增参数,初始化参数为0
set @cid = '';     -- 初始化动态参数cid为空
select 'sid','cid',score
  from(
      select 'sid',  
      		 'cid',
      		  score,
	   		  case when @cid = 'cid' then @rownum := @rownum + 1
	          else @rownum := 1  -- 因为@cid初始化为空,所以第一次循环,@cid ≠ 'cid',所以不执行then,执行else子句
	          end rn,
	          @cid := 'cid', -- 第一轮循环时将cid的值赋给@cid
      from sc
      order by 'cid',score desc -- cid默认升序,score通过desc降序
      ) a
where rn <= 2;
  • 表内容下图左半部分,代码运行解析下图右半部分
    在这里插入图片描述
    请添加图片描述
举报

相关推荐

0 条评论