news 2026/5/25 23:38:55

SQL 条件聚合 使用方法总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL 条件聚合 使用方法总结

SQL 条件聚合 使用方法总结

核心:聚合函数 + 条件判断,分组内按条件统计不同维度数据

一、核心语法

-- 基础格式聚合函数(CASEWHEN条件THEN字段END)别名

常用聚合:SUM/COUNT/AVG/MAX/MIN

二、常用场景&示例

1. 条件求和 SUM

按条件累加指定数据

-- 统计男、女各自薪资总和SELECTSUM(CASEWHENgender='男'THENsalaryEND)ASman_sal,SUM(CASEWHENgender='女'THENsalaryEND)ASwoman_salFROMstaff;

2. 条件计数 COUNT

统计符合条件的记录数

-- 统计及格、不及格人数SELECTCOUNT(CASEWHENscore>=60THEN1END)ASpass_num,COUNT(CASEWHENscore<60THEN1END)ASfail_numFROMexam;

3. 条件平均值 AVG

只计算满足条件数据的均值

-- 计算正式员工平均工资SELECTAVG(CASEWHENstatus=1THENsalaryEND)FROMstaff;

4. 搭配 GROUP BY 分组条件聚合

分组后再细分条件统计

-- 按部门分组,统计部门男女人数SELECTdept,COUNT(CASEWHENgender='男'THEN1END)ASman_cnt,COUNT(CASEWHENgender='女'THEN1END)ASwoman_cntFROMstaffGROUPBYdept;

三、简写兼容写法

  1. MySQL专属IF替代CASE,写法更简短
SUM(IF(score>=60,score,0))COUNT(IF(gender='男',1,NULL))
  1. 空值特性:不满足条件返回NULL,聚合自动忽略

四、关键规则

  1. 满足条件取字段值,不满足默认返回NULL,聚合自动过滤空值
  2. 适合一行多指标统计,替代多次子查询,性能更高
  3. 可多层条件嵌套,实现区间分级统计
  4. 可和GROUP BYHAVING组合使用

五、区间统计实战

-- 统计不同分数段人数SELECTCOUNT(CASEWHENscore<60THEN1END)ASlow,COUNT(CASEWHENscoreBETWEEN60AND80THEN1END)ASmid,COUNT(CASEWHENscore>80THEN1END)AShighFROMexam;

六、速记口诀

条件套进聚合里,CASE判断分数据
一行算出多维度,分组统计超便捷

Leetcode 经典例题

每月交易
表:Transactions

Column NameType
idint
countryvarchar
stateenum
amountint
trans_datedate

id 是这个表的主键。
该表包含有关传入事务的信息。
state 列类型为 [“approved”, “declined”] 之一。

编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。

以 任意顺序 返回结果表。

查询结果格式如下所示。

示例 1:

输入:
Transactions table:

idcountrystateamounttrans_date
121USapproved10002018-12-18
122USdeclined20002018-12-19
123USapproved20002019-01-01
124DEapproved20002019-01-07

输出:

monthcountrytrans_countapproved_counttrans_total_amountapproved_total_amount
2018-12US2130001000
2019-01US1120002000
2019-01DE1120002000
SELECTDATE_FORMAT(trans_date,'%Y-%m')ASmonth,country,COUNT(*)AStrans_count,SUM(amount)AStrans_total_amount,SUM(CASEWHENstate='approved'THEN1ELSE0END)ASapproved_count,SUM(CASEWHENstate='approved'THENamountELSE0END)ASapproved_total_amountFROMTransactionsGROUPBYDATE_FORMAT(trans_date,'%Y-%m'),country;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 23:35:08

35岁那年我考下AI认证,职业反而越走越宽

网上一直流传着一句话&#xff1a;职场人&#xff0c;35岁就是一道坎。在35岁之前&#xff0c;我对此深信不疑。深耕传统岗位近十年&#xff0c;工作内容早已烂熟于心&#xff0c;每天重复着机械、固化的工作&#xff0c;看似稳定&#xff0c;实则危机四伏。薪资常年停滞不前&a…

作者头像 李华
网站建设 2026/5/25 23:29:07

XML 服务器

XML 服务器 引言 XML(可扩展标记语言)服务器在现代互联网技术中扮演着至关重要的角色。它为数据的传输和处理提供了灵活且高效的方式。本文将深入探讨XML服务器的概念、工作原理、应用场景及其在软件开发中的重要性。 什么是XML服务器? XML服务器是一种用于存储、处理和…

作者头像 李华
网站建设 2026/5/25 23:26:02

office和WPS平替软件,可以打开Word_Excel_PPT

软件下载 夸克下载&#xff1a;https://pan.quark.cn/s/7410095527c8更多资源&#xff1a;https://a-xing.top/4465.html 软件介绍 这是一款是发票批量打印工具&#xff0c;这个功能再WPS里面是付费的 我今天推荐的这一款软件是WPS平替了&#xff0c;该软件高度还原了WPS的…

作者头像 李华
网站建设 2026/5/25 23:22:06

网络配置工具类详解

CNet 网络配置工具类详解平台&#xff1a;仅支持 Linux&#xff0c;大量使用 ioctl 系统调用一、概述 CNet 是一个 纯静态方法的网络配置工具类&#xff0c;封装了 Linux 下常用的网络操作&#xff1a;功能类别涵盖内容IP 地址读取/设置本机 IP、子网掩码网关读取/添加/删除/设…

作者头像 李华