SQL基础----窗口函数

一、窗口函数定义

窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。窗口函数与group by类似,都会进行分区,但是窗口函数是对每一行数据都生成一个结果。

基本语法:

【窗口函数】  over (partition by 【分组依据的字段】 order by 【排序依据的字段】)

其中窗口函数有聚合函数和专用窗口函数两种。(聚合:sum\min\avg\max\count等;专用:row_number() :Row_number() over只是用于把查询的数据,为他增加一列连续的ID数/

rank():增加一列排名/dense_rank():增加一列排名/

但是三者有区别: (rank同名次的会显示一样的,但也是占一个位所以第二名没有了;dense_rank就不会占了第二的位;row_number不管同名直接按序123)

 【expr:表示字段名,例如lead(name,n),返回当前行的下n行的name】

sum,min,max,count,avg都是针对自身记录、以及自身记录之上的所有数据进行计算

 

(图示:第2行洲总人口=第一行name+第二行name 所对应的人口,一行行累加)

二、小结

1.窗口函数只能写在select子句中

2.窗口函数中的partition by 子句可以指定分区,和group by  去重分组不同,partition by只分区不去重。

3.窗口函数中没有partition by 子句时,整个表就是一个区

4.排序窗口函数中 order by 是必选的,依据指定字段和指定排序方法进行排序

三、示例

窗口函数先分组再排序,先自己制作一个已经排好gpa的表,在这个表里找最小的gpa数据.格式化书写就比较不容易报错。利用了窗口函数和子查询,注意row_number返回的是排名号

 SQL34:

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值