MySQL必知必會第十二章-彙總數據

来源:https://www.cnblogs.com/samsong1991/archive/2023/01/18/17059313.html
-Advertisement-
Play Games

彙總數據 聚集函數 聚集函數(aggregate function) 運行在行組上,計算和返回單個值的函數。 | 函 數 | 說 明 | | : | : | | AVG() | 返回某列的平均值 | | COUNT() | 返回某列的行數 | | MAX() | 返回某列的最大值 | | MIN() ...


彙總數據

聚集函數

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

函 數 說 明
AVG() 返回某列的平均值
COUNT() 返回某列的行數
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和

AVG()函數

AVG()通過對錶中行數計數並計算特定列值之和,求得該列的平均值:
SELECT AVG(prod_price) AS avg_price FROM products;
AVG()也可以用來確定特定列或行的平均值:
SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id = 1003;
註意:

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

COUNT()函數

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

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

MAX()函數

MAX()返回指定列中的最大值。MAX()要求指定列名:
SELECT MAX(prod_price) AS max_price FROM products;
註意:

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

MIN()函數

MIN()的功能正好與MAX()功能相反,它返回指定列的最小值。與MAX()一樣,MIN()要求指定列名:
SELECT MIN(prod_price) AS min_price FROM products;
註意:

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

SUM()函數

SUM()用來返回指定列值的和(總計):
SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num = 20005;
SUM()也可以用來合計計算值:
SELECT SUM(item_price*quantity) AS items_ordered FROM orderitems WHERE order_num = 20005;
註意:

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

聚集不同值

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

  • 對所有的行執行計算,指定ALL參數或不給參數(因為ALL是預設行為);
  • 只包含不同的值,指定DISTINCT參數。
    SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003;
    註意:
  • 如果指定列名,則DISTINCT只能用於COUNT()。DISTINCT不能用於COUNT(*),因此不允許使用COUNT(DISTINCT),否則會產生錯誤。類似地,DISTINCT必須使用列名,不能用於計算或表達式。
  • 將DISTINCT用於MIN()和MAX():雖然DISTINCT從技術上可用於MIN()和MAX(),但這樣做實際上沒有價值。一個列中的最小值和最大值不管是否包含不同值都是相同的。

組合聚集函數

目前為止的所有聚集函數例子都只涉及單個函數。但實際上SELECT語句可根據需要包含多個聚集函數:
SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) price_max, AVG(prod_pric) AS price_avg FROM products;
註意:

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

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

-Advertisement-
Play Games
更多相關文章
  • C++11 智能指針 shared_ptr Written on 2023-01-16 個人學習智能指針記錄合集: C++11 智能指針 C++11 智能指針 shared_ptr C++11 智能指針 unique_ptr C++11 智能指針 weak_ptr std::shared_ptr 共 ...
  • 前言 用.net6開發一個Winform程式,處理Excel文件,並把結果導出Excel文件。 要用到兩個演算法,一是turf.js庫的booleanPointInPolygon方法,判斷經緯度坐標是否在區域內;二是經緯度糾偏演算法,因為對方給的區域坐標集合有偏移,需要糾偏。 這兩個演算法,網上找C#的實 ...
  • 作者:小牛呼嚕嚕 | https://xiaoniuhululu.com 電腦內功、JAVA底層、面試、職業成長相關資料等更多精彩文章在公眾號「小牛呼嚕嚕」 大家好,我是呼嚕嚕。我們都知道現代電腦採用 0 和 1 組成的二進位,來表示所有的信息。那大家是不是有時候會有這些疑問:為什麼電腦採用了 ...
  • 前言 我們在學習 51 單片機的過程中會用到延時,比如一個簡單的流水燈就需要延時來控制依次點亮的時間,或者一些模塊在單片機發出讀數據指令後,需要延時幾十微秒才可以讀出數據等等,這些都離不開延時,所以我們需要一個精準的延時函數來滿足我們的需求。 本篇介紹一個最簡單並且延時最精準的 51 單片機延時函數 ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者: 葉金榮 文章來源:GreatSQL社區原創 如何快速臨時禁止某賬戶登入 角色ROLES管理需要先激活 關於授權的其他幾點補充 如何複製/復用賬戶 ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者: JennyYu 文章來源:GreatSQL社區原創 前言 兩表使用nest loop(以下簡稱NL)方式進行連接,小表驅動大表效率高,這似乎是大 ...
  • 摘要:華為雲EI DTSE技術佈道師王躍,針對統計信息對於查詢優化器的重要性,GaussDB(DWS)最新版本的analyze當前能力,與開發者和伙伴朋友們展開交流互動,幫助開發者快速上手使用統計信息的自動收集功能。 在本期《統計信息大揭秘——SQL執行優化之密鑰》的主題直播中,我們邀請到華為雲EI ...
  • 摘要:近日,中國信息通信研究院(簡稱“中國信通院”)公佈了第十五批“可信資料庫”評測結果。華為雲GaussDB(for MySQL)憑藉過硬的技術實力順利通過“HTAP資料庫基礎能力評測”。 本文分享自華為雲社區《華為雲GaussDB(for MySQL)通過中國信通院“可信資料庫”評測》,作者:G ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...