Mode disclosure
All modes use one coherent workspace; only disclosure and guidance change. Learn mode keeps theory, concept names, full schema help, progressive hints, and solution review available.
CASE, COALESCE, and Conditional Labels / write query
M12-A03 - Write - create a readable status label with an explicit ELSE
M12-A03 - Write - create a readable status label with an explicit ELSE. Express ordered conditional logic and deliberate null fallback.
- Result grain
- one readable status label per order row
- Exact columns
- order_id; status; status_label
SQL editor shortcuts: Ctrl or Command Enter runs the query, Ctrl or Command Shift Enter checks it, Alt H opens the next hint, Ctrl or Command slash toggles a line comment, Ctrl or Command Shift F formats the SQL, and Escape closes transient UI.
Cursor at line 1, column 1.
Scenario
Express ordered conditional logic and deliberate null fallback: trace first-match CASE branches, use ELSE for unexpected values, and choose COALESCE only for display fallback.
CASE, COALESCE, and Conditional Labels / write query
One-sentence task
M12-A03 - Write - create a readable status label with an explicit ELSE. Express ordered conditional logic and deliberate null fallback.
Learn mode disclosure
Theory, concept names, full schema help, and progressive hints are available.
Structured output contract
- Result grain
- one readable status label per order row
- Exact columns
- order_id; status; status_label
- Source population
- Use the prompt setup plus FROM, JOIN, WHERE, and subquery predicates as the source population. Visible rows are only examples.
- Grouping
- Do not collapse rows unless the contract explicitly asks for aggregation, distinct tuples, or set semantics.
- Ordering
- return order_id; order by order_id
- Validation
- select-only; hidden deterministic variants.
Relevant tables
Time and difficulty
- Estimated time
- 7 minutes
- Difficulty
- 3/5
Objective and concepts
State the requested SQL output contract for case, coalesce, and conditional labels using source grain, columns, ordering, and edge-case evidence.
Glossary links
Concept material
SQL Trail treats every query as an evidence trail: identify source grain, transform rows deliberately, then compare output to a shared contract.
A passing query must handle hidden nulls, ties, boundaries, and no-match rows when the contract makes them relevant.
Syntax card
SELECT <requested_columns>
FROM <source_table>
WHERE <source_population_filter>
GROUP BY <result_grain_columns>
ORDER BY <deterministic_tie_breakers>;- <requested_columns> means the exact output columns, aliases, and order from the visible contract.
- <source_population_filter> means the row population definition, not a copied visible-row value.
- <deterministic_tie_breakers> means all ordering and tie rules needed for repeatable output.
Why this works
A searched CASE stops at the first matching WHEN, so the exact 6.50 and 14.00 boundaries belong to the standard branch.
Edge cases
Hidden variants preserve nulls, ties, duplicates, boundaries, no-match rows, and alternate row order when those risks apply.
PostgreSQL note
The local engine uses PostgreSQL-compatible syntax, including explicit NULL predicates, deterministic ORDER BY clauses, and transactional grading.
Worked example
SELECT product_id, product_name, price, CASE WHEN price < 6.50 THEN 'low' WHEN price <= 14.00 THEN 'standard' ELSE 'premium' END AS price_band FROM products ORDER BY product_id;Assumptions, dialect notes, and common traps
- Duplicate policy
- Preserve duplicate facts unless the prompt explicitly asks for distinct tuples or set semantics.
- Null policy
- Preserve NULL, empty string, zero, and false as distinct values unless the contract says to display a fallback.
- Tie-breakers
- Use every ordering rule in the contract and end tied business metrics with deterministic secondary keys when needed.
- Zero-related entities
- Do not invent zero rows unless the contract asks for preserved parents, missing entities, or complete periods.
- Numeric tolerance
- Use exact semantic comparison unless the activity explicitly declares a numeric tolerance.
PostgreSQL-compatible local checks
Queries run in a local PGlite worker with PostgreSQL-style syntax and transactional grading.
- CASE stops at the first match: A row is expected to collect every matching label or reach a later branch after an earlier true condition. Repair: Order WHEN branches from most specific to broadest and trace exact boundary values top to bottom.
- ELSE is part of the contract: Unexpected statuses silently return NULL because only visible status values were listed. Repair: Add an explicit ELSE label whenever hidden or future values need a readable fallback.
- COALESCE is display fallback: A displayed fallback is assumed to change stored data or filter out missing rows. Repair: Use COALESCE for the selected expression, and keep filtering logic separate with IS NULL or CASE.
- Conditional outputs need compatible types: A CASE or COALESCE mixes text labels with numeric or boolean results and fails type resolution. Repair: Keep every returned branch in the same type family, such as text labels with text fallbacks.
Opened hints
No hints opened yet.