开窗函数 --over()

来源:http://www.pykjg.com 作者:一分快三平台 人气:60 发布时间:2019-10-31
摘要:三个学习性职分:每一个人有两样次数的实际业绩,统计出每种人的最高成绩。 本条主题材料应该依然相对简便易行,其实就用聚合函数就好了。 select id,name,max(score) from Student group b

三个学习性职分:每一个人有两样次数的实际业绩,统计出每种人的最高成绩。

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

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

下面这种状态只适用id 和name是逐风度翩翩对应的,不然查询出来的数码是不许确的。

例如 : 1 张三 100

           2 张三 90

          查询出来的结果

          两条音信都会输出。

幸免这种场所,能够行使开窗函数。

个体精通正是,开窗函数和聚合函数成效是倒转的。

聚合函数,将多行数据统一成生龙活虎行数据;而开窗函数则是将风度翩翩行数据拆分成多行。

开窗函数能够满意上述难题,同事也足以满意别的主题材料。例如:求每一个班最高成绩学子的新闻。

浅析:每一个人学号一定是例外的,名字大概有重名,最大复杂的情景是,各种班最高成绩或然不仅仅三个。

        如若持续使用起来的不二等秘书籍,那么是不能够知足供给的。

        使用开窗函数就会很好的减轻那个问题。

--各个班级的成绩率先的学童
--学子表中国国投息如下
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 有八个参数,第一个参数是列名,第3个参数是偏移的offset,第多个参数是 超过记录窗口时的私下认可值)

本文由一分快三平台发布于一分快三平台,转载请注明出处:开窗函数 --over()

关键词:

上一篇:没有了

下一篇:没有了

最火资讯