SQL必知必會 筆記 第十章 分組資料,sql必知

來源:互聯網
上載者:User

SQL必知必會 筆記 第十章 分組資料,sql必知
10.1資料分組

分組允許吧資料分為多個邏輯組,以便能對每個組進行聚集計算。

10.2建立分組
SELECT vend_id,COUNT(*) AS num_prodsFROM ProductsGROUP BY vend_id;

使用GROUP BY的一些規定:
(1)GROUP BY子句可以包含任意數目的列。這使得能對分組進行嵌套,為資料分組提供更細緻的控制。
(2)如果在GROUP BY子句中嵌套了分組,資料將在最後規定的分組上進行匯總。換句話說,在建立分組時,指定的所有列都一起計算。
(3)GROUP BY子句中列出的每個列都必須是檢索列或有效運算式。如果在SELECT中使用運算式,則必須在GROUP BY子句中指定相同的運算式。不能用別名。
(4)大多數SQL實現不允許GROUP BY列帶有長度可變的資料類型。
(5)除聚集計算語句外,SELECT語句中的每個列都必須在GROUP BY子句給出。
(6)如果分組列種具有NULL值,則NULL將作為一個分組返回。如果列種有多行NULL值,它們將分為一組。
(7)GROUP BY子句必須出現在WHERE子句之後,ORDER BY子句之前。

10.3 過濾分組

WHERE過濾指定的是列而不是分組。事實上WHERE沒有分組的概念。
事實上,目前所學過的所有類型的WHERE子句都可以用HAVING來代替。唯一的差別是WHERE過濾行,而HAVING過濾分組。

SELECT cust_id,COUNT(*) AS ordersFROM OrdersGROUP BY cust_idHAVING COUNT(*) >= 2;

HAVING和WHERE的差別:這裡有另一種理解方法,WHERE在資料分組前進行過濾,HAVING在資料分組後進行過濾。這是一個重要的區別,WHERE排除的行不包括在分組中,這可能會改變計算值,從而影響HAVING子句中基於這些值過濾掉的分組。
列出具有兩個以上,價格為4以上的產品的供銷商

SELECT vend_id,COUNT(*) AS num_prodsFROM ProductsWHERE prod_price >= 4GROUP BY vend_idHAVING COUNT(*) >= 2;

使用HAVING和WHERE:HAVING和WHERE非常類似,如果不指定GROUP BY,則大多數DBMS將把它們作為相同的東西對待。不過,為了自己可以區分,應該僅在與GROUP BY子句結合使用時才使用HAVING,而WHERE子句用於標準的行級過濾。

10.4分組和排序

GROUP BY和ORDER BY的區別

不要忘記ORDER BY:一般在使用GROUP BY子句時,應該也給出ORDER BY子句。這是保證資料正確排序的唯一方法。千萬不要僅依賴GROUP BY排序資料。
檢索包含3個或3個以上物品的訂單號和訂單物品的數目

SELECT order_num,COUNT(*) AS itemsFROM OrderItemsGROUP BY order_numHAVING COUNT(*) >= 3;

為按訂購物品的數目排序輸出,需要添加ORDER BY子句

SELECT order_num,COUNT(*) AS itemsFROM OrderItemsGROUP BY order_numHAVING COUNT(*) >= 3ORDER BY items,order_num;
10.5SELECT子句的順序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.