SQL必知必会

SQL学习08 汇总数据

2016-07-10  本文已影响0人  ATHAS

聚集函数

聚集函数(aggregate function)对某些行运行的函数,计算并返回一个值。

1 AVG()函数

SELECT AVG(prod_price) AS avg_price

FROM Products;

警告:只用于单个列

AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。

说明:NULL值

AVG()函数忽略列值为NULL的行。

2 COUNT()函数

COUNT()函数进行计数。可利用COUNT()确定表中行的数目或符合特定条件的行的数目。

- 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。

- 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

说明:NULL值

如果指定列名,则COUNT()函数会忽略指定列的值为空的行,但如果COUNT()函数中用的是星号(*),则不忽略。

3 MAX()函数 MIN()

5 SUM()函数

SELECT SUM(item_price*quantity)AS total_price

FROM OrderItems

WHERE order_num=20005;

说明:NULL值

SUM()函数忽略列值为NULL的行。

聚集不同值

- 对所有行执行计算,指定ALL参数或不指定参数(因为ALL是默认行为)。

- 只包含不同的值,指定DISTINCT参数。

提示:ALL为默认

ALL参数不需要指定,因为它是默认行为。如果不指定DISTINCT,则假定为ALL。

在使用了DISTINCT后,此例子中的avg_price比较高,因为有多个物品具有相同的较低价格。排除它们提升了平均价格。

SELECT AVG(DISTINCT prod_price)AS avg_price

FROMProducts

WHERE vend_id='DLL01';

警告:DISTINCT不能用于COUNT(*)

如果指定列名,则DISTINCT只能用于COUNT()。DISTINCT不能用于COUNT(*)。类似地,DISTINCT必须使用列名,不能用于计算或表达式。

组合聚集函数

SELECT COUNT(*)AS num_items,

             MIN(prod_price)AS price_min,

             MAX(prod_price)AS price_max,

             AVG(prod_price)AS price_avg

FROMProducts;

上一篇下一篇

猜你喜欢

热点阅读