笔记四:窗口函数

本文介绍了窗口函数在SQL中的应用,包括其与普通聚合函数的区别,如何使用partitionby和orderby进行分组和排序,以及-ranking函数如row_number、rank和dense_rank的具体用法。
摘要由CSDN通过智能技术生成

窗口函数:

实现实时分析处理,而添加的标准SQL功能。

窗口函数是类似于可以返回聚合值的函数,例如sum()、count()、max()等。 但又与普通的聚合函数不同,因为它不会对结果进行分组,这使得输出与输入的行数相同。

窗口函数样式:

select 窗口函数() over([partition by xx order by xx]) from 表名;

说明:

(1)聚合功能:窗口函数可以使用聚合函数sum()、count()、avg()之类的计算统计功能;

(2)partition by:只需要把他看成是group by子句,但在窗口函数中,要写成partition by;

(3)order by:order by和普通查询语句中的order by没什么不同,但要注意输出顺序。

窗口函数的基本语法:

窗口函数名(字段名) over([partition by 分区字段名] [order by 分组内排序])

说明:

(1)窗口函数名可以是聚合函数,例如sum()、count()、avg()等,也可以是分析函数;

(2)聚合函数有count()、sum()、avg()、min()、max();

(3)分析函数有row_number、rank、dense_rank等。

窗口函数over()子句

1.当要给窗口函数取别名时,可以采用【as 别名】方式。

2.使用over()可以与聚合函数一起悬浮显示。

3.将over()结果再计算,是窗口函数的经典应用。

4.窗口函数可以与Where条件语句一起配合使用但要注意窗口函数是在where条件语句后再执行。

窗口函数分组和排序的应用

语法:

ranking函数名() over([partition by 字段名1] order by 字段名 [asc | desc]) [as 别名]

说明:

(1)ranking函数名()可以是row_number()、rank()、dense_rank()这三个函数中的某一个,都用于返回结果集的分组内每行排名;

(2)row_number()不管排名是否有相同的,都会加序号,且按照1、2、3、...、n顺序;

(3)rank()是当排名相同时,名次一样,且同一排名有几个,后面排名就会跳过几次;

(4)dense_rank()是当排名相同的名次一样,且后面名次不跳过;

(5)order by就是将数据按照传入的字段从小到大或从大到小进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值