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

答案: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,从而实现精准计数。

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

Movie Gen

Movie Gen 是 Meta 公司最新推出的ai视频生成大模型

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

查看详情 SQL 聚合函数如何与 CASE WHEN 配合?

条件平均值(AVG + CASE WHEN)

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

示例:计算高评分(>=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 NULL count

上一篇
下一篇