神了,程序员放弃写代码,直接用SQL写逻辑,你废吗?


🍁 一、分析函数语法


function_name(,…) over(<partition_Clause><windowing_Clause>);

🍃 1.1 参数详解

function_name():函数名称

argument:参数

over( ):开窗函数

partition_Clause:分区子句,数据记录集分组,group by…

order by_Clause:排序子句,数据记录集排序,order by…

windowing_Clause:开窗子句,定义分析函数在操作行的集合,三种开窗方式:rows、range、Specifying

注:使用开窗子句时一定要有排序子句!!!

🍃 1.2 常用分析函数

row_number() over(partition by … order by …)

rank() over(partition by … order by …)

dense_rank() over(partition by … order by …)

count() over(partition by … order by …)

max() over(partition by … order by …)

min() over(partition by … order by …)

sum() over(partition by … order by …)

avg() over(partition by … order by …)

first_value() over(partition by … order by …)

last_value() over(partition by … order by …)

lag() over(partition by … order by …)

lead() over(partition by … order by …)

🍁 二、汇总


1、count() over() :统计分区中各组的行数,partition by 可选,order by 可选

2、sum() over() :统计分区中记录的总和,partition by 可选,order by 可选

3、avg() over() :统计分区中记录的平均值,partition by 可选,order by 可选

4、min() over() :统计分区中记录的最小值,partition by 可选,order by 可选

5、 max() over() :统计分区中记录的最大值,partition by 可选,order by 可选

🍃 2.1 总计数

–总计数,统计所有行的总数

select ename,deptno,count(*) over() from emp;

在这里插入图片描述

🍃 2.2 递加累计求和

–,先排序,再递加累计求和

select ename,deptno,sal,hiredate,sum(sal) over(order by hiredate) from emp;

在这里插入图片描述

🍃 2.3 分组求平均值

–先分组,再对组内求平均值

select ename,deptno,job,sal,avg(sal) over(partition by job) from emp;

在这里插入图片描述

🍃 2.4 分组递加求最大

–先分组排序,再对组内求最大值

select ename,deptno,job,hiredate,sal,

max(sal)over(partition by job order by hiredate ) from emp;

在这里插入图片描述

🍁 三、排序


🍃 3.1 无重复值排序

row_number() over() :排序,无重复值,partition by 可选,order by 必选

select row_number() over(order by a.sal desc) rak,a.* from emp a;

当SAL相同时,按顺序排序

在这里插入图片描述

–先分组,再对组内排序,无重复值

select row_number() over(partition by deptno order by a.sal desc) rak,a.* from emp a;

在这里插入图片描述

🍃 3.2 排序连续

dense_rank() :连续排序,partition by 可选,order by 必选

–当值相同时,排序是连续的

select dense_rank() over(partition by deptno order by a.sal desc) rak,a.* from emp a;

在这里插入图片描述

🍃 3.3 排序跳跃

rank() over() :跳跃排序,partition by 可选,order by 必选

当值相同时,排序是跳跃的

select rank() over(partition by deptno order by a.sal desc) rak,a.* from emp a;、

在这里插入图片描述

🍁 四、KEEP函数


max(#) keep(dense_rank first order by # desc)

min(#) keep(dense_rank last order by # desc)

从DENSE_RANK返回的集合中取出排在最后面或者最前面的一个值的行

可能多行,因为值可能相等,因此完整的语法需要在开始处加上一个集合函数以从中取出记录

select job, max(sal) keep(dense_rank first order by sal desc), max(sal) keep(dense_rank last order by sal desc) from emp group by job;

在这里插入图片描述

在这里插入图片描述

🍁 五、开窗函数


指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化

50 preceding:前50行

150 following:后150行

UNBOUNDED :不受控的,无限的

current row 当前行

// 从当前行到最后的数据

between current row and unbounded following

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。

以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考

一份还热乎的蚂蚁金服面经(已拿Offer)面试流程4轮技术面+1轮HR

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
于表达**,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。

以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考

[外链图片转存中…(img-ztrWllqZ-1712494540684)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值