chapter13:分組數(shù)據(jù)

分組數(shù)據(jù)以便能匯總表內(nèi)容的子集,GROUP BY子句和HAVING子句。

創(chuàng)建分組

SELECT vend_id, COUNT(*) AS num_prods
FROM products
GROUP BY vend_id;
  • GROUP BY子句可以包含任意數(shù)目的列。這使得能對分組進(jìn)行嵌套。
  • 如果在GROUP BY子句中嵌套了分組,數(shù)據(jù)將在最后規(guī)定的分組上進(jìn)行匯總。
  • GROUP BY子句中列出的每個列都必須是檢索列或有效表達(dá)式(但不能是聚集函數(shù))。如果在SELECT中使用表達(dá)式,則必須在GROUP BY子句中指定相同的表達(dá)式,不能使用別名。
  • 除聚集計(jì)算語句外,SELECT語句中的每個列都必須在GROUP BY子句中給出。
  • 如果分組列中有NULL值,則NULL將作為一個分組返回。如果列中有多行NULL值,將它們分為一組。
  • GROUP BY子句必須出現(xiàn)在WHERE子句之后,ORDER BY子句之前。

過濾分組

規(guī)定包括哪些組,排除哪些組。HAVING子句,與WHERE相似,區(qū)別在于WHERE過濾行,HAVING過濾分組。

SELECT cust_id, COUNT(*) AS orders
FROM orders
GROUP BY cust_id
HAVING COUNT(*) >= 2;

HAVING和WHERE的區(qū)別WHERE在數(shù)據(jù)分組前進(jìn)行過濾,HAVING在數(shù)據(jù)分組后進(jìn)行過濾。

WHERE和HAVING結(jié)合:

SELECT vend_id, COUNT(*) AS num_prods
FROM products
WHERE prod_price >= 10
GROUP BY vend_id
HAVING COUNT(*) >= 2;

分組和排序

ORDER BY GROUP BY
排序產(chǎn)生的輸出 分組行。但輸出可能不是分組的順序
任意列都可以使用(甚至非選擇的列也可以使用) 只可能使用選擇列或表達(dá)式列,而且必須使用每個選擇列表達(dá)式
不一定需要 如果與聚集函數(shù)一起使用列,則必須使用

GROUP BYORDER BY的區(qū)別:

ORDER BY GROUP BY
排序產(chǎn)生的輸出 分組行。但輸出可能不是分組的順序
任意列都可以使用(甚至非選擇的列也可以使用) 只可能使用選擇列或表達(dá)式列,而且必須使用每個選擇列表達(dá)式
不一定需要 如果與聚集函數(shù)一起使用列,則必須使用

例:

檢索總計(jì)訂單價格大于等于50的訂單號和總計(jì)訂單價格:

SELECT order_num, SUM(quantity*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING SUM(quantity*item_price) >= 50;

為按總計(jì)訂單價格排序輸出,需要添加ORDER BY子句:

SELECT order_num, SUM(quantity*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING SUM(quantity*item_price) >= 50
ORDER BY ordertotal;

SELECT子句順序

子句 說明 是否必須使用
SELECT 要返回的列表或表達(dá)式
FROM 從中檢索數(shù)據(jù)的表 僅在從表選擇數(shù)據(jù)時使用
WHERE 行級過濾
GROUP BY 分組說明 僅在按組計(jì)算聚集時使用
HAVING 組級過濾
ORDER BY 輸出排序順序
LIMIT 要檢索的行數(shù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SQL與MySQL簡介 數(shù)據(jù)庫基礎(chǔ) 從SQL的角度來看,數(shù)據(jù)庫就是一個以某種有組織的方式存儲的數(shù)據(jù)集合。我們可以采...
    heming閱讀 3,532評論 1 8
  • 1. SQL 簡介 SQL 的目標(biāo) 理想情況下,數(shù)據(jù)庫語言應(yīng)允許用戶: 建立數(shù)據(jù)庫和關(guān)系結(jié)構(gòu) 完成基本數(shù)據(jù)管理任務(wù)...
    板藍(lán)根plank閱讀 2,503評論 0 11
  • 前言 讀《sql必知必會 第四版》隨手做的筆記,寫的比較亂,可讀性并不好,讀的是中文版,翻譯過來的感覺有點(diǎn)怪怪的。...
    _老徐_閱讀 767評論 0 0
  • 2017/3/14 RDBMS:關(guān)系型數(shù)據(jù)庫管理系統(tǒng) 關(guān)系模型獨(dú)立于語言 SQL有幾種不同類型的語言:數(shù)據(jù)定義語言...
    ancherl閱讀 1,794評論 0 6
  • “你究竟想干……”夏暖的話在看到陸奕寒那張英氣逼人的臉時,沖到喉嚨的話卡在那里,瞪大眼睛不敢相信。 居然是那天...
    櫻吹雪_1b2e閱讀 1,090評論 0 1

友情鏈接更多精彩內(nèi)容