数据源如图:

Single-Row Functions 单行函数
单行函数会给查询到的结果集的每行返回一个值。
例如 nvl():
select a.*,nvl(comm,0) newcomm from EMP a
结果如下:

可见上图,单行函数针对结果集的每一行都执行了一次并返回了一个值。
Aggregate Functions 聚合函数
聚合函数根据每个group返回一个值。
例如SUM():
select a.deptno,sum(a.sal) sumsal from EMP a group by a.deptno
结果如下:

我们先对deptno进行group by分组,分成了三组分别是10,20,30,然后针对每个组进行一次sum计算并返回值。
注:如果不进行group by,直接进行sum,其实默认查询到的整个表就是一个group,如:
select sum(a.sal) sumsal from EMP a

Analytic Functions 分析函数
分析函数根据每个partition返回一个聚合值。与聚合函数不同在它针对每个partition返回的数据是多行的。分析函数会有一个窗口函数OVER(),其中指定对哪些列进行计算。
例如SUM() OVER():
select sum(a.sal) over(partition by a.deptno) sumsal from EMP a
结果如下:

会发现计算出了每个deptno组的sal之和。
注:如果不进行窗口函数中不进行partition by,默认查询到的整个结果集就是一个partition,如:
select sum(a.sal) over() sumsal from EMP a

在SQL中,进行分组后,列必须是分组字段和聚合函数组成,如果使用分析函数需要保证分析的函数的参数是分组字段。
本文深入讲解了SQL中的三种主要函数类型:单行函数、聚合函数和分析函数。单行函数为查询结果集的每一行返回一个值;聚合函数根据分组返回一个值,常用于求和、平均等操作;分析函数则根据每个partition返回一个聚合值,适用于更复杂的数据分析场景。
1万+

被折叠的 条评论
为什么被折叠?



