MySQL必知必會--匯 總 數 據

来源:https://www.cnblogs.com/ygjzs/archive/2020/01/23/12230229.html
-Advertisement-
Play Games

聚集函數 我們經常需要彙總數據而不用把它們實際檢索出來,為此MySQL提 供了專門的函數。使用這些函數,MySQL查詢可用於檢索數據,以便分 析和報表生成。這種類型的檢索例子有以下幾種。 確定表中行數(或者滿足某個條件或包含某個特定值的行數)。 獲得表中行組的和。 找出表列(或所有行或某些特定的行) ...


聚集函數

我們經常需要彙總數據而不用把它們實際檢索出來,為此MySQL提
供了專門的函數。使用這些函數,MySQL查詢可用於檢索數據,以便分
析和報表生成。這種類型的檢索例子有以下幾種。

  • 確定表中行數(或者滿足某個條件或包含某個特定值的行數)。
  • 獲得表中行組的和。
  • 找出表列(或所有行或某些特定的行)的最大值、最小值和平均
    值。
    上述例子都需要對錶中數據(而不是實際數據本身)彙總。因此,
    返回實際表數據是對時間和處理資源的一種浪費(更不用說帶寬了)。重
    復一遍,實際想要的是彙總信息。
    為方便這種類型的檢索,MySQL給出了5個聚集函數,見表12-1。
    這些函數能進行上述羅列的檢索

聚集函數(aggregate function) 運行在行組上,計算和返回單
個值的函數。

AVG()函數

AVG() 通過對錶中行數計數並計算特定列值之和,求得該列的平均
值。 AVG() 可用來返回所有列的平均值,也可以用來返回特定列或行的平
均值。

AVG() 也可以用來確定特定列或行的平均值


這條 SELECT 語句與前一條的不同之處在於它包含了 WHERE 子
句。此 WHERE 子句僅過濾出 vend_id 為 1003 的產品,因此
avg_price 中返回的值只是該供應商的產品的平均值

只用於單個列 AVG() 只能用來確定特定數值列的平均值,而
且列名必須作為函數參數給出。為了獲得多個列的平均值,
必須使用多個 AVG() 函數
NULL 值 AVG() 函數忽略列值為 NULL 的行

COUNT()函數

COUNT() 函數進行計數。可利用 COUNT() 確定表中行的數目或符合特
定條件的行的數目。
COUNT() 函數有兩種使用方式。

  • 使用 COUNT(*) 對錶中行的數目進行計數,不管表列中包含的是空
    值( NULL )還是非空值。
  • 使用 COUNT(column) 對特定列中具有值的行進行計數,忽略
    NULL 值。

下麵的例子返回 customers 表中客戶的總數

下麵的例子只對具有電子郵件地址的客戶計數

這條 SELECT 語句使用 COUNT(cust_email) 對 cust_email 列
中有值的行進行計數。在此例子中, cust_email 的計數為 3 (表
示5個客戶中只有3個客戶有電子郵件地址)

NULL 值 如果指定列名,則指定列的值為空的行被 COUNT()
函數忽略,但如果 COUNT() 函數中用的是星號( * ),則不忽

MAX()函數

MAX() 返回指定列中的最大值。 MAX() 要求指定列名

對非數值數據使用 MAX() 雖然 MAX() 一般用來找出最大的
數值或日期值,但MySQL允許將它用來返回任意列中的最大
值,包括返迴文本列中的最大值。在用於文本數據時,如果數
據按相應的列排序,則 MAX() 返回最後一行

NULL 值 MAX() 函數忽略列值為 NULL 的行。

MIN()函數

MIN() 的功能正好與 MAX() 功能相反,它返回指定列的最小值。與
MAX() 一樣, MIN() 要求指定列名

對非數值數據使用 MIN() MIN() 函數與 MAX() 函數類似,
MySQL允許將它用來返回任意列中的最小值,包括返迴文本
列中的最小值。在用於文本數據時,如果數據按相應的列排序,
則 MIN() 返回最前面的行

NULL 值 MIN() 函數忽略列值為 NULL 的行

SUM()函數

SUM() 用來返回指定列值的和(總計)。
下麵舉一個例子, orderitems表 包含訂單中實際的物品,每個物品
有相應的數量( quantity )。可如下檢索所訂購物品的總數(所有
quantity 值之和):

函數 SUM(quantity) 返回訂單中所有物品數量之和, WHERE 子
句保證只統計某個物品訂單中的物品

SUM() 也可以用來合計計算值。在下麵的例子中,合計每項物品的
item_price*quantity ,得出總的訂單金額

函數 SUM(item_price*quantity) 返回訂單中所有物品價錢
之和, WHERE 子句同樣保證只統計某個物品訂單中的物品

在多個列上進行計算 如本例所示,利用標準的算術操作符,
所有聚集函數都可用來執行多個列上的計算
NULL 值 SUM() 函數忽略列值為 NULL 的行。

聚集不同值

MySQL 5 及 後 期 版 本 下 面 將 要 介 紹 的 聚 集 函 數 的
DISTINCT 的使用,已經被添加到MySQL 5.0.3中。下麵所述
內容在MySQL 4.x中不能正常運行

以上5個聚集函數都可以如下使用:

  • 對所有的行執行計算,指定 ALL 參數或不給參數(因為 ALL 是預設
    行為);
  • 只包含不同的值,指定 DISTINCT 參數。

ALL 為預設 ALL 參數不需要指定,因為它是預設行為。如果
不指定 DISTINCT ,則假定為 ALL

下麵的例子使用 AVG() 函數返回特定供應商提供的產品的平均價格。
它與上面的 SELECT 語句相同,但使用了 DISTINCT 參數,因此平均值只
考慮各個不同的價格

註意 如果指定列名,則 DISTINCT 只能用於 COUNT() 。 DISTINCT
不能用於 COUNT(*),因此不允許使用COUNT(DISTINCT),
否則會產生錯誤 。類似地, DISTINCT 必須使用列名,不能用
於計算或表達式

將 DISTINCT 用於 MIN() 和 MAX() 雖然 DISTINCT 從技術上可
用於 MIN() 和 MAX() ,但這樣做實際上沒有價值。一個列中的
最小值和最大值不管是否包含不同值都是相同的

組合聚集函數

目前為止的所有聚集函數例子都只涉及單個函數。但實際上 SELECT
語句可根據需要包含多個聚集函數。請看下麵的例子:

取別名 在指定別名以包含某個聚集函數的結果時,不應該使
用表中實際的列名。雖然這樣做並非不合法,但使用唯一的名
字會使你的SQL更易於理解和使用(以及將來容易排除故障)

聚集函數用來彙總數據。MySQL支持一系列聚集函數,可以用多種
方法使用它們以返回所需的結果。這些函數是高效設計的,它們返回結
果一般比你在自己的客戶機應用程式中計算要快得多


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 將自己定義的方法,變數存放在文件中,為一些腳本或者互動式的解釋器實例使用,這個文件稱為模塊。 細說的話,模塊可以分為四個通用類別: 1 使用python編寫的.py文件(自定義模塊) 2 已被編譯為共用庫或DLL的C或C++擴展 3 把一系列模塊組織到一起的文件夾(註:文件夾下有一個__init__ ...
  • MyBatis Generator(MBG)的使用 MBG可以根據數據表生成對應的model、xml映射文件、mapper介面,只是簡單的生成,還需要根據需求修改。 1、下載jar包 https://github.com/mybatis/generator/releases 解壓後有3個jar包,只 ...
  • AddControllers/AddMvc方法允許添加自定義ActionFilterAttribute進行過濾 文檔中這麼定義Filter: 可以創建自定義篩選器,用於處理橫切關註點。 橫切關註點的示例包括錯誤處理、緩存、配置、授權和日誌記錄。 篩選器可以避免複製代碼。 例如,錯誤處理異常篩選器可以 ...
  • Newtonsoft.Json與System.Text.Json區別 在 Newtonsoft.Json中可以使用例如 方式設置接收/序列化時間格式,但在.net core 3.1中System.Text.Json是沒有自帶方式進行轉換,這就需要自定義Converter實現時間轉換 "官方GitHu ...
  • 今天在Ubuntu伺服器上安裝supervisor,部署沒成功想卸載重來,sudo apt-get remove supervisor 後發現配置文件還在,便手動刪除了配置文件。再次安裝,提示配置文件不存在,WTF!配置文件不該你軟體給我創建嗎?我想。 查閱資料才知,還有 apt-get purge ...
  • (1)、開機進入系統前,按F8,進入Windows 10的高級啟動選項,選擇“修複電腦”。 (2)、選擇鍵盤輸入方法。 (3)、如果有管理員密碼,需要輸入;如果沒有設置密碼,直接“確定”即可。 (4)、進入系統恢覆選項後,選擇“Dell DataSafe 還原和緊急備份”。 (5)、選擇“選擇其他 ...
  • 子查詢 版本要求 MySQL 4.1引入了對子查詢的支持,所以要想使用 本章描述的SQL,必須使用MySQL 4.1或更高級的版本。 SELECT語句 是SQL的查詢。迄今為止我們所看到的所有 SELECT 語句 都是簡單查詢,即從單個資料庫表中檢索數據的單條語句。 查詢(query) 任何SQL語 ...
  • 數據分組 目前為止的所有計算都是在表的所有數據或匹配特定的 WHERE 子句的 數據上進行的。提示一下,下麵的例子返回供應商 1003 提供的產品數目 但如果要返回每個供應商提供的產品數目怎麼辦?或者返回只提供 單項產品的供應商所提供的產品,或返回提供10個以上產品的供應商怎 麽辦? 這就是分組顯身 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...