基于子字符串的记录分组 - Spark 大数据分析
8.5 基于部门的滚动求和
-- 计算每个部门内,按照员工姓名排序的薪资滚动和
select deptno, sal, sum(sal) over (partition by deptno order by ename) as s from emp;
-- 计算每个部门的总薪资
select deptno, sum(sal) over (partition by deptno) from emp;
8.6 获取当前行的相邻行数据
-- 使用 lead 和 lag 函数获取当前行的上一行和下一行的薪资信息
select ename, sal, lead(sal) over(order by sal) aaa, lag(sal) over(order by sal) bbb from emp;
8.7 基于月份统计连续三个月的总收入
-- 从月份、人员和收入数据表中,计算每个月以及其上一个月和下一个月的总收入
select
month,
sum(income) as 当月收入,
lag(sum(income)) over(order by month) as 上月收入,
lead(sum(income)) over(order by month) as 下月收入
from table
group by month;
8.8 基于子字符串进行分组
-- 按照员工的雇佣年份对员工进行分组,并计算每个年份的平均薪资
Select to_char(hiredate,'yyyy'), avg(sal) from emp group by to_char(hiredate,'yyyy');