答案:SQL中通过CASE与聚合函数结合实现条件统计,如COUNT(CASE WHEN...)统计满足条件的行数,SUM(CASE WHEN...THEN值ELSE 0 END)对符合条件的数据求和,并可使用多条件CASE进行分类汇总,提升查询效率。

SQL 聚合函数结合条件聚合,通常使用 CASE 表达式嵌套在聚合函数内部,实现对不同条件的数据分别统计。这种方式可以在一个查询中返回多个条件下的汇总结果,而无需多次查询或连接。
COUNT(CASE WHEN 条件 THEN 1 END) 只会对满足条件的行计数,不满足的返回 NULL,而 COUNT 不统计 NULL 值。
例如:统计某个订单表中“已完成”和“已取消”的订单数量:
SELECT 
    COUNT(CASE WHEN status = 'completed' THEN 1 END) AS completed_count,
    COUNT(CASE WHEN status = 'canceled' THEN 1 END) AS canceled_count
FROM orders;
SUM(CASE WHEN 条件 THEN 值 ELSE 0 END) 是常见写法,确保不满足条件时加 0,避免遗漏。
示例:按用户统计收入,区分新老客户:
SELECT 
    user_id,
    SUM(CASE WHEN is_new = 1 THEN amount ELSE 0 END) AS new_customer_revenue,
    SUM(CASE WHEN is_new = 0 THEN amount ELSE 0 END) AS existing_customer_revenue
FROM sales
GROUP BY user_id;
比如:按成绩等级统计学生人数:
SELECT
    COUNT(CASE 
        WHEN score >= 90 THEN 1 
    END) AS A_grade,
    COUNT(CASE 
        WHEN score >= 80 AND score < 90 THEN 1 
    END) AS B_grade,
    COUNT(CASE 
        WHEN score >= 70 AND score < 80 THEN 1 
    END) AS C_grade,
    COUNT(CASE 
        WHEN score < 70 THEN 1 
    END) AS F_grade
FROM students;
例如:按部门统计男女性员工的平均工资:
SELECT
    department,
    AVG(CASE WHEN gender = 'M' THEN salary END) AS avg_male_salary,
    AVG(CASE WHEN gender = 'F' THEN salary END) AS avg_female_salary
FROM employees
GROUP BY department;
基本上就这些。通过在聚合函数中嵌套 CASE 表达式,能灵活实现各种条件统计,是 SQL 数据分析中的常用技巧。关键在于理解聚合函数如何处理 NULL 值,并合理设计 CASE 的返回值。
以上就是SQL 聚合函数如何结合条件聚合?的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号