Oracle學習日誌-7(聚合查詢)

GROUP BY子句:

GROUP BY能夠對錶進行分割。好比把下面的表按照商品種類進行分割,並列出該商品種類下有多少商品
sql

SQL代碼以下code

SELECT product_type ,COUNT(*)
FROM Product
GROUP BY product_type;


或者按商品種類分類,而後求出該商品種類下的商品售價一共多少錢。blog

SELECT product_type ,SUM(sale_price)
FROM Product
GROUP BY product_type;


這裏GROUP BY子句指定的列稱爲聚合鍵,GROUP BY product_type中,聚合鍵就是product_type。若是聚合鍵中包含NULL,也會將NULL做爲一組特定的數據。
好比以進價做爲聚合鍵:class

SELECT purchase_price ,COUNT(*)
FROM Product
GROUP BY purchase_price;


查詢結果表示,進價爲NULL的記錄有2條,進價爲500的記錄有2條,進價爲790的記錄有1條,進價爲2800的記錄有2條,進價爲320的記錄有1條。im


HAVING子句:

HAVING子句能夠爲分組後的表指定條件,一樣,WHERE也能夠指定條件,可是WHERE只能指定記錄的條件,HAVING能夠指定組的條件。
HAVING子句格式d3

SELECT <列名1> <列名2> <列名3>......
FROM<表名>
GROUP BY <列名1> <列名2> <列名3>
HAVING<分組結果對應條件>

例如按照商品種類分組,而後取出分組後記錄爲2的種類。數據

SELECT product_type ,COUNT(*)
FROM Product
GROUP BY product_type
HAVING COUNT(*)=2;


或者是查詢按照商品種類分組,而後列出分組下,售價平均值大於2000的記錄查詢

SELECT product_type ,AVG(sale_price)
FROM Product
GROUP BY product_type
HAVING AVG(sale_price)>2000;

相關文章
相關標籤/搜索