oracle 12c 集合函数
基本介绍
集合函数与单一行函相对,可以多行输入,输出一个结果。可以使用在select 句子,order by 句,还有having 句子中,where句中不可以使用。
基础的写法为:
函数名([DISTINCT|ALL]{列名|式})
----------
/*DISTINCT:重复的值可以当做1次处理
* ALL: 含有重复的值时,视为多次。default。
*/
COUNT函数
说明
COUNT 函数为统计出要求的数据的件数,参数可以为数值型,文字型,还有日期型。选项可以设定 *,作为参数
写法
COUNT({*|[DISTINCT|ALL] 式})
-----------
SQL> select count(deptno),count(distinct deptno),count(*)
2 from employees;
COUNT(DEPTNO) COUNT(DISTINCTDEPTNO) COUNT(*)
------------- --------------------- ----------
14 3 14
参数说明
参数 | 说明 |
---|---|
* | 重复值还有空值都包含的数值 |
DISTINCT | 重复的值可以作为1个值输出,不含有null值 |
ALL | 重复的值做为多个输出,不含有null值,默认值 |
MAX函数和MIN函数
说明
MAX 函数为统计出要求的数据的最大值,MIN 函数为统计出要求的数据的最x小值参数,可以为数值型,文字型,还有日期型。
写法
MAX([DISTINCT|ALL] 式)
MIN([DISTINCT|ALL] 式)
-----------
SQL> select max(sal),min(sal)
2 from employees;
MAX(SAL) MIN(SAL)
---------- ----------
500000 110000
AVG函数和SUM函数
说明
AVG函数为统计组数的平均值,SUM函数为统计组数中的和值,可以为数值型。
写法
AVG([DISTINCT|ALL] 式)
SUM([DISTINCT|ALL] 式)
-----------
SQL> select AVG(sal),SUM(sal)
2 FROM EMPLOYEES;
AVG(SAL) SUM(SAL)
---------- ----------
273214.285 3825000
STDDEV函数
说明
STDDEV函数为统计算出标准差
VARIANCE函数
说明
VARIANCE函数为统计算出方差
LISTAGG函数
说明
LISTAGG函数分散
技巧篇
group 函数中非常重要的一点是对null 的处理,这里可以借助NVL() 函数以及NVL2()函数。
SQL> select avg(nvl(comm,0)),sum(nvl(comm,0)) from employees;
AVG(NVL(COMM,0)) SUM(NVL(COMM,0))
---------------- ----------------
67142.8571428571 940000