聚集函数(aggregate function):对某些行运行的函数,计算并返回一个值,(作用是总计的和总数的)
aggregate | 英 [ˈægrɪgət] | 美 [ˈæɡrɪɡɪt] |
n. | 骨料; 合计; 聚集体; 集料(可成混凝土或修路等用的); |
adj. | 总数的,总计的; 聚合的; [地] 聚成岩的; |
vt. | 使聚集,使积聚; 总计达; |
在数据库应用中, 需要汇总表中的数据,而不是实际数据本身,所以返回实际表数据纯属浪费时间和处理资源,我们实际想要的是汇总信息,例如:
1. 确定表中的行数(或者满足某个条件或包含某个特定值的行数)
2.获得表中某些行的和
3.找出表列的最大值、最小值和平均值
一共有5个聚集函数,
AVG() 返回某列的平均值
COUNT()返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM()返回某列值之和
1. AVG()函数
只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出,但只能用于单个列,为了获得多个列的平均值,必须使用多个AVG()函数,并且这个函数会忽略列值为NULL的行。
AVG( [DISTINCT | ALL] column) 使用DISTINCT会去重,这样算平均数更加严谨科学,否则会有重数计算会有影响。
SELECT AVG(prod_price) AS avg_price
FROM Products
WHERE vend_id = "DLL01"
2.COUNT()
此函数进行计数,可确定表中行的数目或符合特定条件的行的数目。有两种使用方式:
(1COUNT( *)对表中行的数目进行计数,不管表列中包含的是空值NULL还是非空值,不管行中各列有什么值。并且不能用DISTINCT
(2)COUNT( [DISTINCT | ALL] column)对特定列中具有值得行进行计数,忽略NULL值。使用DISTINCT会去重
3.MAX()和MIN()函数
MAX( [DISTINCT | ALL] column) 都会忽略列值为 NULL 的行。其实这两个函数有没有 DISTINCT都没有什么卵用。
4.SUM()函数
会返回指定列值的和(总计)也会忽略值为 NULL 的行。
quantity和 item_price为表中的行,SUM()函数中可以有 计算字段
SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;
还有这么使用的:
SELECT SUM(quantity*item_price) AS total_price //合计每项物品的quantity*item_price,得出总的订单金额。
FROM OrderItems
WHERE order_num = 20005;