一、聚集函数
1、AVG()
SELECT AVG(prod_price) AS avg_price
FROM Products;
从产品表中查询所有产品价格的平均值,并赋予列别名“avg_price”。
2、COUNT()
SELECT COUNT(*) AS num_cust
FROM Customers;
从客户表中,统计客户的数量总数。如果将COUNT(*)中的*号,换为“email”则是对“email”列中的行数进行统计。
3、MAX()
SELECT MAX(prod_price) AS num_price
FROM Products;
从产品表中,查询最贵产品的价格。
4、MIN()
含义与MAX相反,取最小值。
5、SUM()
SELECT SUM(item_price*quantity) AS total_price
FROM OrderItems
WHERE order_num = 20005;
从订单表中,计算订单号为20005的所有产品的价格总数。
二、聚集不同值
以上5个聚集函数执行计算时,如果指定ALL参数或不给参数,则默认为ALL,即对所有的行执行计算。
如果计算只包含不同的值,需要指定DISTINCT参数。
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';
从产品表中,计算供应商ID为“DLL01”产品价格不同值的价格的平均值,就是去除了价格相同的数值。
注意:如果指定列名,则DISTINCTH只能用于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,
FROM Products;
一次查询多个聚集函数。查询的效果如下: