在SQL中,聚合函数是对一组值执行计算并返回单个值的函数。常见的聚合函数包括COUNT、SUM、AVG、MAX、MIN等。在聚合函数中使用条件是指在这些函数计算过程中加入筛选逻辑,只对满足特定条件的行进行计算。
SELECT
SUM(CASE WHEN condition THEN column_name ELSE 0 END) AS conditional_sum,
AVG(CASE WHEN condition THEN column_name ELSE NULL END) AS conditional_avg,
COUNT(CASE WHEN condition THEN 1 ELSE NULL END) AS conditional_count
FROM table_name;
SELECT
SUM(column_name) FILTER (WHERE condition) AS filtered_sum,
COUNT(*) FILTER (WHERE condition) AS filtered_count
FROM table_name;
SELECT
COUNT(*) AS total_count,
COUNT(CASE WHEN condition THEN 1 ELSE NULL END) AS conditional_count,
(SELECT COUNT(*) FROM table_name WHERE condition) AS subquery_count
FROM table_name;
原因:
解决方案:
-- 正确示例
SELECT
AVG(CASE WHEN score > 60 THEN score ELSE NULL END) AS avg_passing_score,
COUNT(CASE WHEN status = 'active' THEN 1 ELSE NULL END) AS active_users
FROM students;
原因:
解决方案:
原因:
解决方案:
-- 电商订单分析示例
SELECT
COUNT(*) AS total_orders,
SUM(CASE WHEN status = 'completed' THEN 1 ELSE 0 END) AS completed_orders,
SUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END) AS total_revenue,
AVG(CASE WHEN payment_method = 'credit_card' THEN amount ELSE NULL END) AS avg_credit_card_payment,
COUNT(DISTINCT CASE WHEN created_at > '2023-01-01' THEN user_id ELSE NULL END) AS new_customers
FROM orders;
通过合理使用聚合函数中的条件,可以高效地完成复杂的数据分析任务,减少应用层代码的复杂度。