首页 > 数据库 > SQL > 正文

SQL 聚合函数如何与 CASE WHEN 配合?

舞姬之光
发布: 2025-09-20 14:52:01
原创
403人浏览过
答案:SQL中聚合函数与CASE WHEN结合可实现条件统计,如用SUM配合CASE按状态求订单金额总和,COUNT配合CASE统计男女用户数,AVG计算高评分订单平均金额,并可通过GROUP BY按部门统计薪资超8000人数。

sql 聚合函数如何与 case when 配合?

SQL 聚合函数CASE WHEN 结合使用,可以在聚合过程中实现条件判断,灵活地对数据进行分组统计。这种组合常用于根据不同条件计算不同的聚合结果,比如条件计数、条件求和、分类统计等。

条件求和(SUM + CASE WHEN)

当你想根据某个条件对特定行求和时,可以用 SUM 配合 CASE WHEN

示例:统计订单中“已完成”和“已取消”的金额分别总和

SELECT 
  SUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END) AS completed_total,
  SUM(CASE WHEN status = 'cancelled' THEN amount ELSE 0 END) AS cancelled_total
FROM orders;
登录后复制

说明:只有满足条件的记录才参与求和,不满足则加 0,不影响总和。

条件计数(COUNT + CASE WHEN)

COUNT 会忽略 NULL 值,因此在使用 CASE 返回 NULL 可以实现条件计数。

示例:统计不同性别的用户数量

SELECT 
  COUNT(CASE WHEN gender = 'M' THEN 1 END) AS male_count,
  COUNT(CASE WHEN gender = 'F' THEN 1 END) AS female_count
FROM users;
登录后复制

说明:当条件不满足时,CASE 返回 NULL,而 COUNT 不计入 NULL,从而实现精准计数。

条件平均值(AVG + CASE WHEN)

可以计算满足特定条件的数据的平均值。

琅琅配音
琅琅配音

全能AI配音神器

琅琅配音 208
查看详情 琅琅配音
示例:计算高评分(>=4)订单的平均金额

SELECT 
  AVG(CASE WHEN rating >= 4 THEN amount END) AS avg_high_rated_amount
FROM orders;
登录后复制

说明:不满足条件时返回 NULL,AVG 自动忽略这些值。

结合 GROUP BY 进行分组条件聚合

更常见的是与 GROUP BY 搭配,按类别做条件统计。

示例:按部门统计薪资是否超过 8000 的人数

SELECT 
  department,
  COUNT(CASE WHEN salary > 8000 THEN 1 END) AS high_salary_count,
  COUNT(CASE WHEN salary <= 8000 THEN 1 END) AS low_salary_count
FROM employees
GROUP BY department;
登录后复制

说明:每个部门都会分别统计高薪和低薪员工数量。

基本上就这些。关键是理解:CASE WHEN 在聚合内部控制哪些值参与计算,配合聚合函数的特性(如忽略 NULL),就能实现灵活的条件统计。

以上就是SQL 聚合函数如何与 CASE WHEN 配合?的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号