SQL

CASE WHEN — Conditional Values

admin by @admin ADMIN
1d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Inline if/else inside a SELECT, ORDER BY, or aggregation. The Swiss-army knife for converting raw column values into labels or buckets.
SQL
Raw
-- Bucket users by age
SELECT id, name,
       CASE
         WHEN age < 18          THEN 'minor'
         WHEN age < 30          THEN 'young adult'
         WHEN age < 65          THEN 'adult'
         ELSE                        'senior'
       END AS age_group
FROM users;

-- Conditional aggregation — count by category in a single pass
SELECT
    COUNT(*)                                            AS total,
    SUM(CASE WHEN status = 'active'   THEN 1 ELSE 0 END) AS active_count,
    SUM(CASE WHEN status = 'archived' THEN 1 ELSE 0 END) AS archived_count,
    SUM(CASE WHEN amount > 100        THEN amount ELSE 0 END) AS big_ticket_revenue
FROM orders;

-- Custom sort order with CASE in ORDER BY
SELECT id, status
FROM orders
ORDER BY
  CASE status
    WHEN 'pending'  THEN 1
    WHEN 'shipped'  THEN 2
    WHEN 'delivered' THEN 3
    ELSE 99
  END,
  created_at DESC;
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.