| 用途 | 条件分支与映射 |
|---|---|
| 两种形式 | CASE 值 WHEN … / CASE WHEN 条件 … |
| 可嵌套 | 是 |
分桶统计
分桶统计
SELECT
CASE WHEN amount >= 1000 THEN 'high'
WHEN amount >= 100 THEN 'mid'
ELSE 'low' END AS bucket,
COUNT(*) AS cnt
FROM orders
GROUP BY bucket;行列转换(透视)
行列转换(透视)
SELECT user_id,
SUM(CASE WHEN status='paid' THEN amount ELSE 0 END) AS paid_amt,
SUM(CASE WHEN status='refund' THEN amount ELSE 0 END) AS refund_amt
FROM orders GROUP BY user_id;CASE 从上到下命中即返回,条件顺序会影响结果;用于索引列会阻断索引,尽量放在 SELECT 或分组计算里。