SQL中的聚合函数
什么是聚合函数:它对其应用的每个行集返回一个值。
1、AVG(表达式) 返回表达式中所有的平均值。仅用于数字列并自动忽略NULL值。
返回每个产品类别的平均价格:
SELECT category_name, AVG(list_price) avg_product_price
FROM production.products p
INNER JOIN production.categories c ON c.category_id = p.category_id
GROUP BY category_name
ORDER BY category_name
2、COUNT(表达式) 返回表达式中非NULL值的数量。可用于数字和字符列。
统计有多少个客户电话
SELECT COUNT(phone) phone FROM sales.customers
3、COUNT(*) 返回组中的行数(包括有NULL值的列)。
返回每个品牌和产品数量。 此外,它仅返回产品数量大于 20 的品牌:
SELECT brand_name, COUNT(*) product_count
FROM production.products p
INNER JOIN production.brands c ON c.brand_id = p.brand_id
GROUP BY brand_name HAVING COUNT(*) > 20
ORDER BY product_count DESC
4、MAX(表达式) 返回表达式中的最大值,忽略NULL值。可用于数字、字符和日期时间列。
以下语句获取每个品牌的品牌名称和最高价格:
SELECT brand_name, MAX(list_price) max_list_price
FROM production.products p
INNER JOIN production.brands b ON b.brand_id = p.brand_id
GROUP BY brand_name
ORDER BY brand_name
5、MIN(表达式) 返回表达式中的最小值,忽略NULL值。可用于数字、字符和日期时间列。
获取最低价格大于 500 的产品类别。
SELECT category_name, MIN(list_price) min_list_price
FROM production.products p
INNER JOIN production.categories c ON c.category_id = p.category_id
GROUP BY category_name HAVING MIN(list_price) > 500
ORDER BY category_name
6、SUM(表达式) 返回表达式中所有的总和,忽略NULL值。仅用于数字列。
查找每种产品的库存,仅返回库存大于 100 的产品:
SELECT product_name, SUM(quantity) total_stocks
FROM production.stocks s
INNER JOIN production.products p ON p.product_id = s.product_id
GROUP BY product_name
HAVING SUM(quantity) > 100
ORDER BY total_stocks DESC