MAX()
一般用于找出
最大的数值
或
日期值
,但多数 DBMS 也支持查找任意列的最大值,如文本。当用于文本时,
MAX()
返回改列排序后的最后一行
MAX()
忽略空值(NULL)
MIN()
--- example
SELECT MIN(prod_price) AS min_price
FROM Products;
MIN()
函数用法同理于 MAX()
,当用于文本时,返回改列排序后的最前面的行
MIN()
忽略空值(NULL)
SUM()
计算单个列的数值之和
SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;
计算多个列的合计值
SELECT SUM(item_price*quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;
所有聚集函数,都能执行多个列上的计算,像上面的列子
SUM()
忽略空值(NULL)
DISTINCT
对所有行执行计算,指定 ALL
参数或者不指定参数(ALL 参数是默认行为)
只计算不同的值,指定 DISTINCT
参数
⬆️ 即:可能有多个相同的数据,此时,使用了 DISTINCT
后,则相同的数据,计算时只会使用一次;否则,则全部都用语计算
-- 这里,如果 prod_price 有多个相同的值的话,则只会使用一次,因此,这里平均值可能会提供,因为排出了多个最小值
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';
DISTINCT
不能用于 COUNT(*)
,可以用于 COUNT(column)
,这道理上冲突啊
DISTINCT
可以用在 MIN()
和 MAX()
上,只是,没什么意义
使用多个聚集函数
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;
使用聚集函数时,推荐使用 别名
聚集函数高效,一般比客户端中处理得要快