除了取得個別值之外,SELECT 語句還能夠以一個或多個欄為基礎彙總資料元素。Navicat 查詢建立工具的這篇文章將介紹如何在查詢中使用原生 SQL 彙總函式以顯示欄的統計資料。
關於 Sakila 範例資料庫
與前幾篇文章一樣,我們今天將在此處構建的查詢將在 Sakila 範例資料庫Sakila 範例資料庫執行。它包含許多以電影業為主題的資料表,涵蓋了演員和電影製片廠以至影碟出租店的所有內容。如需下載和安裝 Sakila 資料庫的說明,請參閱Generating Reports on MySQL Data(產生 MySQL 資料的報表)教學。
使用彙總函式
在 SQL 中,輸出欄位可以傳遞給彙總函式以產生欄資料的統計資料。彙總函式包括 COUNT、MAX、MIN、SUM 和 AVG:
- COUNT(): 傳回指定欄位中含有非 NULL 值的列數。
- SUM(): 傳回指定欄位中非 NULL 值的總和。
- AVG(): 傳回指定欄位中非 NULL 值的平均值。
- MIN(): 傳回指定欄位中非 NULL 值的最小值。
- MAX(): 傳回指定欄位中非 NULL 值的最大值。
如第 2 部分中所述,按一下 Navicat 查詢建立工具中輸出欄位左邊的
這查詢使用彙總函式顯示電影數量、平均電影長度、電影總長度以及最低和最高出租率:
設定群組準則
以上的結果與整個資料表相關的。你也可以使用 GROUP BY 子句根據一欄或多欄分組記錄。
讓我們設計一個查詢,按月顯示租借電影的數量。在查詢建立工具中依照下列步驟執行︰
- 將 film 和 rental 資料表拖至編輯器。
- 將 film.film_id 欄位拖至 rental.inventory_id 欄位上以聯結兩個資料表。
- 加入一個輸出欄位。在編輯器中,輸入「MONTHNAME(rental_date)」。
- 按一下 <Alias> 標籤,然後輸入「rental_month」值。
- 加入第二個欄位。這次,從欄位清單中選取 rental_id。
- 按一下 <Func> 標籤,然後從清單中選擇 COUNT。
- 按一下 <Alias> 標籤,然後輸入別名「rental_count」。
- 按一下 <按這裡加入 GROUP BY> 標籤,然後使用編輯器輸入「MONTH(rental_date)」。
- 按一下「確定」關閉「查詢建立工具」並返回「查詢編輯器」。
查詢建立工具現在應該如下所示:
執行查詢以檢視結果:
請留意如何在 rental_month 輸出欄位上套用 MONTHNAME 函式顯示完整的月份名稱而不是 MONTH() 函數傳回的數字。無論如何,你可以使用任一種函式根據月份分組結果。