最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL聚合查詢COUNT、SUM、AVG用法實戰(zhàn)案例指南

 更新時間:2026年05月18日 10:52:35   作者:Languorous.  
本文主要講述了MySQL中最常用的聚合函數(shù):COUNT、SUM、AVG的用法、場景和避免誤區(qū)的方法,通過實戰(zhàn)案例深入剖析了每個函數(shù)的適用場景和注意事項,感興趣的朋友跟隨小編一起看看吧

前言

日常開發(fā)中,我們經(jīng)常需要對數(shù)據(jù)進(jìn)行「統(tǒng)計分析」,比如:統(tǒng)計用戶總數(shù)、計算平均年齡、求和訂單金額,這時候就需要用到 MySQL 聚合函數(shù)。

最常用的聚合函數(shù)有3個:COUNT(計數(shù))、SUM(求和)、AVG(求平均),本篇用實戰(zhàn)案例,講透每個函數(shù)的用法、場景和避坑點,新手能直接套用。

繼續(xù)使用前面的user表,新增一張訂單表(增加實戰(zhàn)場景):

-- 創(chuàng)建訂單表 order(注意order是關(guān)鍵字,用反引號包裹)
CREATE TABLE `order` (
    order_id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,  -- 關(guān)聯(lián)用戶表主鍵
    amount DECIMAL(10,2),  -- 訂單金額(保留2位小數(shù))
    create_time DATETIME DEFAULT NOW()
);
-- 插入訂單測試數(shù)據(jù)
INSERT INTO `order` (user_id, amount) 
VALUES 
(1, 99.90),
(1, 199.90),
(2, 59.90),
(3, 299.90),
(4, 159.90),
(4, 89.90);

一、COUNT:計數(shù)(最常用)

核心作用:統(tǒng)計符合條件的「記錄條數(shù)」,有3種常用寫法,重點區(qū)分差異。

1. COUNT(*)

統(tǒng)計所有記錄條數(shù),包括 NULL 值(最常用、效率最高)。

-- 1. 統(tǒng)計用戶總數(shù)
SELECT COUNT(*) AS user_total FROM user;
-- 2. 統(tǒng)計性別為男的用戶數(shù)
SELECT COUNT(*) AS male_total FROM user WHERE gender = 1;
-- 3. 統(tǒng)計訂單總數(shù)
SELECT COUNT(*) AS order_total FROM `order`;

2. COUNT(字段名)

統(tǒng)計該字段「非NULL值」的記錄條數(shù),忽略NULL值。

-- 統(tǒng)計age字段非NULL的用戶數(shù)(如果有用戶age為NULL,會被排除)
SELECT COUNT(age) AS age_not_null FROM user;

3. COUNT(DISTINCT 字段名)

統(tǒng)計該字段「非NULL且不重復(fù)」的記錄條數(shù)。

-- 統(tǒng)計有訂單的不同用戶數(shù)(一個用戶可能有多個訂單,只算1次)
SELECT COUNT(DISTINCT user_id) AS user_with_order FROM `order`;

COUNT避坑

? 錯誤:用COUNT(字段名)統(tǒng)計總條數(shù),忽略了NULL值,導(dǎo)致統(tǒng)計結(jié)果偏小;

? 正確:統(tǒng)計總條數(shù)優(yōu)先用 COUNT(*),統(tǒng)計非NULL字段用 COUNT(字段名)。

二、SUM:求和

核心作用:對指定「數(shù)值類型字段」求和,忽略NULL值,非數(shù)值類型求和會返回0。

-- 1. 統(tǒng)計所有訂單的總金額
SELECT SUM(amount) AS total_amount FROM `order`;
-- 2. 統(tǒng)計用戶id=1的所有訂單金額總和
SELECT SUM(amount) AS user1_total FROM `order` WHERE user_id = 1;
-- 3. 非數(shù)值字段求和(返回0,無意義)
SELECT SUM(name) AS wrong_sum FROM user;

SUM避坑

? 錯誤:對非數(shù)值字段(如name、email)使用SUM,結(jié)果無意義;

? 正確:SUM僅用于數(shù)值類型字段(int、decimal等)。

三、AVG:求平均

核心作用:對指定「數(shù)值類型字段」求平均值,忽略NULL值,計算邏輯:總和 ÷ 非NULL記錄數(shù)。

-- 1. 計算所有用戶的平均年齡
SELECT AVG(age) AS avg_age FROM user;
-- 2. 計算所有訂單的平均金額(保留2位小數(shù),用ROUND函數(shù))
SELECT ROUND(AVG(amount), 2) AS avg_amount FROM `order`;
-- 3. 計算性別為女的用戶平均年齡
SELECT AVG(age) AS female_avg_age FROM user WHERE gender = 2;

AVG避坑

? 錯誤:忽略NULL值的影響,比如部分用戶age為NULL,會導(dǎo)致平均年齡計算偏差;

? 正確:如果需要包含NULL值(按0計算),可搭配IFNULL函數(shù):SELECT AVG(IFNULL(age, 0)) FROM user;

四、聚合查詢實戰(zhàn)案例

需求:統(tǒng)計有訂單的用戶中,年齡大于20的用戶數(shù)、他們的平均年齡、以及他們的訂單總金額。

SELECT 
    COUNT(DISTINCT u.id) AS target_user,  -- 符合條件的用戶數(shù)
    ROUND(AVG(u.age), 2) AS avg_age,      -- 平均年齡
    SUM(o.amount) AS total_order_amount   -- 訂單總金額
FROM user u
LEFT JOIN `order` o ON u.id = o.user_id  -- 關(guān)聯(lián)用戶表和訂單表
WHERE u.age > 20 AND o.user_id IS NOT NULL;  -- 有訂單且年齡>20

五、總結(jié)

1. COUNT:計數(shù),優(yōu)先用COUNT(*),統(tǒng)計非NULL用COUNT(字段),去重計數(shù)用COUNT(DISTINCT 字段);

2. SUM:對數(shù)值字段求和,忽略NULL,非數(shù)值字段返回0;

3. AVG:對數(shù)值字段求平均,忽略NULL,可搭配ROUND函數(shù)保留小數(shù)。

到此這篇關(guān)于MySQL聚合查詢COUNT、SUM、AVG用法實戰(zhàn)案例指南的文章就介紹到這了,更多相關(guān)mysql聚合查詢count、sum avg用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 常用數(shù)據(jù)庫語句 小練習(xí)

    mysql 常用數(shù)據(jù)庫語句 小練習(xí)

    一個mysql小練習(xí) 建表 查詢 修改表 增加字段 刪除字段
    2009-07-07
  • MYSQL如何查看操作日志詳解

    MYSQL如何查看操作日志詳解

    任何一種數(shù)據(jù)庫中都有各種各樣的日志,下面這篇文章主要給大家介紹了關(guān)于MYSQL如何查看操作日志的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • MySQL之update語句執(zhí)行流程解讀

    MySQL之update語句執(zhí)行流程解讀

    文章詳細(xì)描述了MySQL中`update`語句的執(zhí)行流程,從BufferPool中查找數(shù)據(jù)到磁盤刷新臟頁的全過程,涉及BufferPool、undolog、redolog、binlog、MDL鎖等多個組件
    2026-05-05
  • MySQL安全快速的刪除一張大表的正確方式

    MySQL安全快速的刪除一張大表的正確方式

    生產(chǎn)環(huán)境中直接 DROP TABLE 一張千萬級大表無異于自 殺,本文深度解析 InnoDB 刪表的底層原理,提供一套無感刪表的標(biāo)準(zhǔn)操作流程(SOP),助你在不影響業(yè)務(wù)的前提下,安全、快速地清理海量數(shù)據(jù),需要的朋友可以參考下
    2026-03-03
  • SQL?日期處理視圖創(chuàng)建(常見數(shù)據(jù)類型查詢防范?SQL注入)

    SQL?日期處理視圖創(chuàng)建(常見數(shù)據(jù)類型查詢防范?SQL注入)

    這篇文章主要為大家介紹了SQL日期處理和視圖創(chuàng)建:常見數(shù)據(jù)類型、示例查詢和防范?SQL?注入方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • MySQL安裝失敗后實現(xiàn)純凈卸載刪除過程

    MySQL安裝失敗后實現(xiàn)純凈卸載刪除過程

    文章講述了在Windows 2019 Server服務(wù)器上因重復(fù)安裝導(dǎo)致MySQL安裝失敗的情況,并詳細(xì)介紹了如何進(jìn)行純凈卸載MySQL的步驟,包括通過控制面板卸載程序、手動刪除文件夾以及清理注冊表中的MySQL相關(guān)條目,以確??梢灾匦掳惭bMySQL
    2025-10-10
  • MySQL敏感數(shù)據(jù)進(jìn)行加密的幾種方法小結(jié)

    MySQL敏感數(shù)據(jù)進(jìn)行加密的幾種方法小結(jié)

    本文介紹了在MySQL中對敏感數(shù)據(jù)進(jìn)行加密的幾種方法,每種方法都有其適用場景和特點,可以根據(jù)具體需求選擇合適的方法來保護(hù)數(shù)據(jù)安全,感興趣的可以了解一下
    2024-11-11
  • Mysql將查詢結(jié)果集轉(zhuǎn)換為JSON數(shù)據(jù)的實例代碼

    Mysql將查詢結(jié)果集轉(zhuǎn)換為JSON數(shù)據(jù)的實例代碼

    這篇文章主要介紹了Mysql將查詢結(jié)果集轉(zhuǎn)換為JSON數(shù)據(jù)的實例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • MySQL中連接池參數(shù)優(yōu)化與性能提升指南

    MySQL中連接池參數(shù)優(yōu)化與性能提升指南

    這篇文章主要深入探討了MySQL連接池中的關(guān)鍵參數(shù),分析參數(shù)配置不合理可能導(dǎo)致的性能問題,并分享實用的優(yōu)化方法,希望可以幫助開發(fā)者提升系統(tǒng)性能
    2025-07-07
  • Mysql索引會失效的幾種情況分析

    Mysql索引會失效的幾種情況分析

    在做項目的過程中,難免會遇到明明給mysql建立了索引,可是查詢還是很緩慢的情況出現(xiàn),下面我們來具體分析下這種情況出現(xiàn)的原因及解決方法
    2014-06-06

最新評論

富民县| 梨树县| 永川市| 东阳市| 手游| 云浮市| 阿拉善左旗| 磐安县| 攀枝花市| 阜南县| 沐川县| 芷江| 武定县| 山东省| 吉水县| 板桥市| 夏河县| 晋江市| 张家界市| 黄陵县| 万安县| 五家渠市| 颍上县| 从化市| 剑河县| 积石山| 会昌县| 雅江县| 通城县| 广昌县| 赤壁市| 大邑县| 富源县| 德兴市| 余姚市| 霍邱县| 青阳县| 勃利县| 宁晋县| 石阡县| 慈溪市|