MYSQL 學習筆記記錄整理之二:分組數據
阿新 • • 發佈:2017-12-02
where 分組 學習 供應商 order by 記錄 price 需要 sele 1、創建分組
GROUP BY
SELECT ven_id,COUNT(*) AS num_prods FROM products GROUP BY ven_id;
註意:
GROUP BY可以包含任意數目的列
GROUP BY列出的每個列都必須是檢索列或者有效的表達式(但不能是聚集函數)。如果在SELECT語句中使用表達式,則必須在GROUP BY中指定相同的表達式,不能使用別名。
除聚集計算語句外,SELECT語句中的每個列都必須在GROUP BY子句中給出。
GROUP BY必須出現在WHERE語句之後,ORDER BY語句之前。
2、過濾分組
HAVING過濾分組,WHERE過濾行。
SELECT cust_id ,COUNT(*) AS orders
FROM orders GROUP BY cust_id
HAVING COUNT(*) >=2;
COUNT(*) >=2--過濾2個以上的訂單分組
例子:列出具有2個(含)以上、價格為10(含)以上的產品的供應商
SELECT cust_id ,COUNT(*) AS num_prods
FROM products
WHERE prod_price>=10
GROUP BY ven_id
HAVING COUNT(*) >=2;
3、分組和排序
例子:檢索總訂單價格大於等於50的訂單號和總計訂單價格
SELECT order_num,SUM(quantiy*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING SUM(quantiy*item_price)>=50;
為按總計訂單價格排序輸出,需要添加ORDER BY語句,如下:
SELECT order_num,SUM(quantiy*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING SUM(quantiy*item_price)>=50
ORDER BY ordertotal;
MYSQL 學習筆記記錄整理之二:分組數據