【oracle_sql】分析函数和聚合函数的区别

oracle分析函数和聚合函数的区别

分析函数语法:函数名(可选参数) over(可选分区句子,可选排序句子 )

可选分区句子(partition by):将查询结果分为不同的组,默认是将所有的结果作为一个分组。
可选排序句子(order by):将每个分区进行排序。

举个栗子:
1、查询每个部门最高绩效的人
select tno,
       max(tnum)
         from test_0123
       group by tno;

结果:

tno tnum
1 90
2 80
3 100
4 98

 

2、但如果需要查询每个部门排名前三名绩效最高的。
这个时候使用聚合函数就达不到这个要求,因为聚合函数只返回一行数据,可以考虑使用分析函数,
select *
  from (select tno,
               tnum,
               tname,
               row_number() over(partition by tno order by tnum desc) rn
          from test_0123) t
 where t.rn < 4;

结果:

tno tnum tname rn
1 90 Lisi 1
1 70 Zhansi 2
1 70 Yesterday 3
2 97 liusan 1
2 80 Zhangsan 2
2 80 Wiliam 3
3 100 Wangliu 1
3 99 mingsan 2
3 88 maishao 3
4 98 9999 1

 

 

你可能感兴趣的:(【oracle_sql】分析函数和聚合函数的区别)