聚集函数
聚集函数对一组查询返回一个值。聚集函数取用于依赖SELECT语句的WHERE子句返回的一组行的值。没有WHERE子句时,聚集函数依赖于FROM子句组成的所有行的值。
不能将聚集函数用于下列数据类型的表达式中:
1,TEXT
2,BYTE
3,CLOB
4,BLOB
5,集合数据类型(LIST,MULTISET,SET)
6,ROW
7,不透明数据类型
AVG函数
下列查询计算stock表中所有行的平均值unti_price。
select AVG(unti_price) from stock;
查询结果
(avg)
$197.14
下列查询计算stock表中manu_code为SHM的那些行的平均值unti_price。
select AVG(unti_price) from stock where manu_code = 'SHM';
查询结果
(avg)
$204.93
COUNT函数
下列查询stock表中的总行数进行计数和显示。
select count(*) from stock;
查询结果
(count(*))
73
下列查询包含where子句来对stock表中的特定行进行计数。
select count(*) from stock where manu_code = 'SHM';
查询结果
(count(*))
17
通过包含DISTINCT关键字和列明,可以计算stock表中不同制造商代码的数量。
select count(distinct manu_code) from stock;
查询结果
(count)
9
MAX和MIN函数
可以在同一select语句中组合聚集函数,例如,可以同时在选择列表中包括MAX和MIN函数,如下所示:
select max(ship_charge),min(ship_charge) from orders;
该查询查找并显示orders表中的最大和最小ship_charge。
查询结果
(max) (min)
$25.20 $5.00
RANGE函数
RANGE函数计算所选行的最大值与最小值之差。
只能将RANGE函数用于数字列。下列查找stock表中商品的价格范围。
select range(unti_price) from stock;
查询结果
(range)
955.50
对于其它聚集函数,当查询包括GROUP BY 子句时,RANGE函数适用于组的行,如下所示:
select range(unti_price) from stock group by manu_code;
查询结果
(range)
820.20
595.50
720.00
225.00
632.50
0.00
460.00
645.90
425.00
STDEV函数
STDEV函数计算所选行的标准偏差。它是VARIANCE函数的平方根。
可将STDEV函数应用于数字列。下列查找入口的标准偏差:
select stdev(age) from u_pop where age>21;
对于其他聚集,当查询包括group by子句时,STDEV函数适用于组的行,如下所示:
select stdev(age) from u_pop group by state where stdev(age)>21;
除非指定列中的每个值都是空值,否则会忽略空值。如果每个列都是空值,那么STDEV函数对该列返回空值。
SUM函数
下列查询计算1988年7月13日交付的所有订单的总ship_weight。
select sum(ship_weight) from orders where ship_date = '07/13/1998';
查询结果
(sum)
130.5
VARIANCE函数
VARIANCE函数返回值样本的方差作为所有选择行的方差的无偏估计。它计算以下值:
(sum(xi**2)-(sum(xi)**2)/N)/(N-1)
在此示例中,xi是列中的每个值,N是列中值的总数。只能将VARIANCE函数应用于数字列。一下查询查找入口的便准偏差:
select VARIANCE(age) from u_pop where age>21;
对于其他聚集,当查询包括group by 子句时,VARIANCE函数适用于所有的行。如下所示:
select VARIANCE(age) from u_pop group by birth where VARIANCE(age)>21;
除非指定列中的每个值都是空值,否则会忽略空值。如果每个列都是空值,那么VARIANCE函数对该列返回空值。