SQL語法 - GROUP BY / HAVING

閱讀時間約 3 分鐘

※ GROUP BY

用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。

※ 語法

SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
GROUP BY column1, column2, ...;

//​aggregate_function(column)可以是聚合函數,
//如SUM(column)、COUNT(column)、AVG(column)、MAX(column)或MIN(column)等

※ 解析順序

raw-image

先用WHERE篩選出我們想要的記錄,再用SELECT篩選出我們需要的欄位。接著,GROUP BY做分組處理。如果我們想要對所有結果進行排序,我們會在GROUP BY之後使用ORDER BY子句來排序。

※ 實例

• Aggregate function(聚合函數):用於對同一個群組中的所有記錄,進行數據分析和統計計算的函數的一個函式。

常見的聚合函數包括:

  1. AVG :計算某列的平均值
  2. COUNT :計算某列的行數
  3. MAX:找出某列的最大值
  4. MIN: 找出某列的最小值
  5. SUM:計算某列的總和
  • 計算每個產品的總銷售量,可以使用SUM()GROUP BY來達成:
SELECT ProductID, SUM(Sales)
FROM SalesRecords
GROUP BY ProductID;

• Expression(表達式):指的是一個可以產生值的語句。這個語句可以包含變量、常數、運算符和函數。例如針對欄位做加減乘除的處裡。

SELECT (Price * Quantity) AS TotalCost
FROM OrderDetails;
//將Price欄位和Quantity欄位的值相乘,然後將結果作為TotalCost返回。​

※ HAVING

通常與GROUP BY子句一起使用,根據指定的條件將分組查詢的結果進行過濾。

※ 語法

raw-image


※ 解析順序

raw-image

操作的順序是先GROUP BY把record做分組,然後進行Aggregate function(聚合函數)運算,最後使用HAVING進行篩選。

SELECT Department, COUNT(EmployeeID) as EmployeeCount
FROM Employees
GROUP BY Department
HAVING COUNT(EmployeeID) > 5;
//將員工按照部門分組,然後計算每個部門的員工數量。HAVING子句過濾出員工數量大於5的部門

※ HAVING 和 WHERE 的不同

  • HAVING:會在Aggregate function(聚合函數)運算後對結果進行過濾,篩選的對象是group
  • WHERE:會在GROUP BY之前先對數據進行過濾,篩選的對象是record
raw-image


    全端網頁開發專業知識分享
    留言0
    查看全部
    發表第一個留言支持創作者!
    ※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
    ※ 什麼是ORDER BY? 可以讓SELECT出來的結果,根據你想要的方式排序。簡單說,用於對查詢結果進行排序。 ※ 語法: SELECT select_list FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC]
    ※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
    ※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
    ※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
    ※ 什麼是Postman? 在開發、測試程式時,很常需要在串接使用前,先確認API 是否正常。 而 Postman 是一個非常方便好用的API測試工具。 ※ 以下是 Postman 的主要功能: 請求方法與請求網址:你可以選擇 API 的方法(例如 GET、POST、PUT、DELETE 等
    ※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
    ※ 什麼是ORDER BY? 可以讓SELECT出來的結果,根據你想要的方式排序。簡單說,用於對查詢結果進行排序。 ※ 語法: SELECT select_list FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC]
    ※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
    ※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
    ※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
    ※ 什麼是Postman? 在開發、測試程式時,很常需要在串接使用前,先確認API 是否正常。 而 Postman 是一個非常方便好用的API測試工具。 ※ 以下是 Postman 的主要功能: 請求方法與請求網址:你可以選擇 API 的方法(例如 GET、POST、PUT、DELETE 等
    你可能也想看
    Thumbnail
    1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
    Thumbnail
    重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
    Thumbnail
    近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
    Thumbnail
    這篇文章主要是介紹了SQL查詢效能調校的方法,針對索引最佳化做了整理和分享,並提供了一些注意事項和建議。
    Thumbnail
    在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
    Thumbnail
    給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
    Thumbnail
    這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
    Thumbnail
    你是否曾經遇到這樣的情況?手上有一張表格,需要根據某個欄位進行分類,但表格又很繁雜,如果手動一個個查找,就需要花費大量時間才能找到想要的資料,這樣實在是太沒效率又容易眼花。 今天,我就來教你一個FILTER 函數快速分類技巧,讓你輕鬆掌握數據,節省時間。
    Thumbnail
    我相信有更聰明好用的方法,不過目前我還是喜歡用這個一人群組。
    Thumbnail
    本文將介紹 SQL 中的連接(JOIN),連接(JOIN)是用於結合來自兩個或多個資料表的相關數據,建議讀過我之前發佈的幾篇"SQL學習筆記"之後再來看這篇。
    Thumbnail
    有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    Thumbnail
    題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key Table:
    Thumbnail
    1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
    Thumbnail
    重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
    Thumbnail
    近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
    Thumbnail
    這篇文章主要是介紹了SQL查詢效能調校的方法,針對索引最佳化做了整理和分享,並提供了一些注意事項和建議。
    Thumbnail
    在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
    Thumbnail
    給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
    Thumbnail
    這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
    Thumbnail
    你是否曾經遇到這樣的情況?手上有一張表格,需要根據某個欄位進行分類,但表格又很繁雜,如果手動一個個查找,就需要花費大量時間才能找到想要的資料,這樣實在是太沒效率又容易眼花。 今天,我就來教你一個FILTER 函數快速分類技巧,讓你輕鬆掌握數據,節省時間。
    Thumbnail
    我相信有更聰明好用的方法,不過目前我還是喜歡用這個一人群組。
    Thumbnail
    本文將介紹 SQL 中的連接(JOIN),連接(JOIN)是用於結合來自兩個或多個資料表的相關數據,建議讀過我之前發佈的幾篇"SQL學習筆記"之後再來看這篇。
    Thumbnail
    有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    Thumbnail
    題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key Table: