聚集函數
函數 | 說明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行數 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
SELECT AVG(prod_price) AS avg_price
FROM products
where vend_id =1003;
得到的輸出 是名爲avg_price ,vend_id爲1003的平均值
注意
COUNT(*)所有 包括 NULL
COUNT©不包括NULL
聚集不同值
DISTINCT
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
where vend_id =1003;
因爲同一個價格可能會出現多次,在之前的例子中,無法避免這種情況,而加了DISTINCT 就可以每個價格只計算一次
分組數據
GROUP BY
SELECT vend_id,COUNT(*) AS num_prods
FROM products
GROUP BY vend_id ;
得到每 vend_id 有多少個行。
如果想對num_prods的數量進行限制,比如,num_prods>2才選擇。需要在後面進行HAVING 限制
SELECT vend_id,COUNT(*) AS num_prods
FROM products
GROUP BY vend_id
HAVING COUNT(*)>2
注意
HAVING 和WHERE 不一樣,HAVING能應用在所有WHERE應用的場景,就是換了關鍵詞,但是WHERE只能對行進行操作,HAVING還能對組進行操作
(未完待續……)