当前位置: 奥门金沙手机娱乐网址 > 数据库 > 正文

开窗函数

时间:2019-10-06 10:44来源:数据库
贰个学习性职分:各类人有两样次数的成绩,计算出各类人的最高成绩。 其一难题应有依旧相对简单,其实就用聚合函数就好了。 select id,name,max(score) from Student group by id,name order by na

贰个学习性职分:各类人有两样次数的成绩,计算出各类人的最高成绩。

其一难题应有依旧相对简单,其实就用聚合函数就好了。

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 有几个参数,第三个参数是列名,第四个参数是偏移的offset,第七个参数是 高出记录窗口时的私下认可值)

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

关键词:

  • 上一篇:没有了
  • 下一篇:没有了