Navicat 部落格

2018 年 2 月 27 日由 Robert Gravelle 撰寫

除了取得個別值之外,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 查詢建立工具中輸出欄位左邊的 修飾詞可開啟 SUM、MAX、MIX、AVG 和 COUNT 彙總函式的清單。從清單中選取所需的函式會將它插入查詢中:

這查詢使用彙總函式顯示電影數量、平均電影長度、電影總長度以及最低和最高出租率:

設定群組準則

以上的結果與整個資料表相關的。你也可以使用 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() 函數傳回的數字。無論如何,你可以使用任一種函式根據月份分組結果。

Navicat 文章
頻道記錄
分享
部落格封存檔