当前位置: 永利皇宫463手机版 > 数据库 > 正文

开窗函数

时间:2019-09-22 04:29来源: 数据库
两个学习性义务:各类人有例外交部次官数的战表,总计出每一个人的万丈战绩。 以此主题素材应该依然相对简便易行,其实就用聚合函数就好了。 select id,name,max(score) from Student grou

两个学习性义务:各类人有例外交部次官数的战表,总计出每一个人的万丈战绩。

以此主题素材应该依然相对简便易行,其实就用聚合函数就好了。

select id,name,max(score) from Student group by id,name order by name

上边这种气象只适用id 和name是各样对应的,不然查询出来的数码是不精确的。

例如 : 1 张三 100

           2 张三 90

          查询出来的结果

          两条音信都会输出。

幸免这种景观,能够接纳开窗函数。

个人知道就是,开窗函数和聚合函数功效是倒转的。

聚合函数,将多行数据统10%一行数据;而开窗函数则是将一行数据拆分成多行。

开窗函数能够满意上述问题,同事也得以满意其余标题。举个例子:求每一个班最高战绩学生的音讯。

深入分析:各样人学号一定是不一致的,名字或许有重名,最大复杂的境况是,各个班最高成绩可能无休止贰个。

        借使三回九转行使起来的秘技,那么是无法满意须要的。

        使用开窗函数就能够很好的化解那么些标题。

--各样班级的成就率先的学员
--学生表中国国投息如下
a 1 80
b 1 78
c 1 95
d 2 74
e 2 92
f 3 99
g 3 99
h 3 45
i 3 55
j 3 78

查询结果如下:
c 1 95 1
e 2 92 1
f 3 99 1
g 3 99 1

SQL查询语句如下:
select *
from
(
select name,class,s,rank()over(partition by class order by s desc) mm
from t2

) as t
where t.mm=1

 

心得:
rank()跳跃排序,有三个第二名时后面跟着的是第四名
dense_rank() 接二连三排序,有八个第二名时依然跟着第三名

over()开窗函数: 在运用聚合函数后,会将多行变成一行,
而开窗函数是将一行成为多行;
同不常间在利用聚合函数后,如果要出示任何的列必需将列参与到group by中,
而采取开窗函数后,能够不接纳group by,间接将具备消息彰显出来。

开窗函数适用于在每一行的尾声一列增加聚合函数的结果。

常用开窗函数:
1.为每条数据展现聚合新闻.(聚合函数() over())
2.为每条数据提供分组的聚合函数结实(聚合函数() over(partition by 字段) as 别称) --依据字段分组,分组后展开总结
3.与名次函数一同使用(row number() over(order by 字段) as 小名)

常用深入分析函数:(最常用的应该是1.2.3 的排序)
1、row_number() over(partition by ... order by ...)
2、rank() over(partition by ... order by ...)
3、dense_rank() over(partition by ... order by ...)
4、count() over(partition by ... order by ...)
5、max() over(partition by ... order by ...)
6、min() over(partition by ... order by ...)
7、sum() over(partition by ... order by ...)
8、avg() over(partition by ... order by ...)
9、first_value() over(partition by ... order by ...)
10、last_value() over(partition by ... order by ...)
11、lag() over(partition by ... order by ...)
12、lead() over(partition by ... order by ...)
lag 和lead 可以获取结果聚集,按自然排序所排列的此时此刻行的前后相邻若干offset 的某部行的某些列(不用结果集的自关系);
lag ,lead 分别是向前,向后;
lag 和lead 有四个参数,第一个参数是列名,第一个参数是偏移的offset,第四个参数是 超过记录窗口时的暗许值)

编辑: 数据库 本文来源:开窗函数

关键词: