SampleThis is the live report format, filled with illustrative data.
Readineer · diagnostic reportPrivate · visible only to you

SQL & Querying

Target level
Mid
Generated
5 Jul 2026
Assessment
SQL-7N4E9
Rubric
v1.4
Coverage
5 of 18 patterns
Last verification
None yet
01What this report says

Mid-level evidence on 1 assessed pattern. 4 priority gaps remain.

Your work demonstrates Joins I, semantics. The highest-priority gaps are Filtering & predicates, Aggregation & GROUP BY, Windows II (frames & running) and Time & dates.

  • 1demonstrated at target level
  • 4open findings
  • 0reopened
  • 0resolved
  • 13not assessed

Separate facts. They never combine into one score.

What to do next
  1. 1Practise Filtering & predicates on a task where the trap can bite.
  2. 2Reassess it once you’ve closed it. The change is dated in your history.
  3. 3Assess an untested pattern to widen coverage.
02The pattern map

18 patterns, 5 assessed

  • Demonstrated
  • Gap found
  • Reopened
  • Not assessed
FOUNDATIONS
COMBINING & SHAPING
WINDOWS & TIME
SEQUENCE & DEDUP
RESHAPE & MODELING
SCALE & MODERN
P01Filtering & predicatesStatusGap foundConfidenceHighPriorityHighChecked5 Jul 2026
03Findings, in priority order

Five findings, each linked to the task behind it

Finding

The WHERE clause filters on a column that is NULL for the rows you wanted, so the result is silently empty: no error, no warning.

Why it matters

A predicate on a nullable column drops every row where the value is NULL, because NULL fails an equality test rather than matching it.

Submittedtask sql-filter-scope
SELECT order_id, amountFROM ordersWHERE region = 'APAC';
A fixchanged lines marked
SELECT order_id, amountFROM ordersWHERE region = 'APAC' OR region IS NULL;
What would resolve it

Rewrite the predicate to handle NULLs explicitly (IS NULL / COALESCE) and confirm the query returns the expected rows on a task where the trap can bite.

Finding

COUNT and SUM run before the rows with NULL amounts are handled, so the per-user total skips the blanks and reports less revenue than actually occurred.

Why it matters

Aggregates ignore NULLs. Without COALESCE, a missing value quietly lowers the total instead of being treated as zero.

What would resolve it

Coalesce the amount to 0 before aggregating, then reassess Aggregation & GROUP BY once the totals reconcile.

Finding

The window uses a ROWS frame, which counts rows rather than calendar days, so days with no orders are skipped and the final day drops out.

Why it matters

ROWS counts physical rows; RANGE counts a value interval. For a calendar window you need RANGE with an explicit interval, so gaps are still included.

Submittedtask sql-window-rolling
SUM(amount) OVER (  PARTITION BY user_id ORDER BY day  ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
A fixchanged lines marked
SUM(amount) OVER (  PARTITION BY user_id ORDER BY day  RANGE BETWEEN INTERVAL '6' DAY PRECEDING AND CURRENT ROW)
What would resolve it

Switch the frame to RANGE with an explicit day interval and verify the last day appears.

Finding

A BETWEEN on a date boundary excludes the last day’s afternoon, because the upper bound resolves to midnight rather than end of day.

Why it matters

Date maths at boundaries is a common trap: BETWEEN d1 AND d2 stops at d2 00:00, dropping everything later that day.

What would resolve it

Use a half-open interval (>= d1 AND < d2 + 1 day) and reassess Time & dates.

Finding

A CASE inside COUNT falls through to ELSE 0, so every row is counted instead of only the matching ones.

Why it matters

COUNT() counts any non-NULL value, including 0. Use SUM(CASE WHEN … THEN 1 END) or drop the ELSE so non-matches stay NULL.

What would resolve it

Remove the ELSE branch (or switch to SUM) and confirm the conditional count matches a hand check.

04History

Every change, dated

  1. 5 Jul 2026Gap found. Filtering & predicates · mid
  2. 5 Jul 2026Gap found. Aggregation & GROUP BY · mid
  3. 5 Jul 2026Gap found. Windows II – frames & running · mid
  4. 5 Jul 2026Gap found. Time & dates · mid
  5. 5 Jul 2026Assessed. Joins I – semantics · mid
Resolved findings · 0

None yet. When a finding closes, it stays here, struck through, with the dated evidence that closed it. If it comes back, it’s reopened with the original claim intact.

05How this report was produced
  1. 01Rubric-based evaluationEvery conclusion maps to a rubric criterion. Criterion references appear on each finding.
  2. 02Evidence and confidence checksA skill is marked “insufficient evidence” or “not assessed” when the submission doesn’t support a reliable conclusion. Confidence describes how stable a conclusion is, not how important it is.
  3. 03A verifiable recordEvidence bands change only with dated evidence, in both directions. Nothing is deleted; a reopened finding keeps the original claim.
  4. 04Challenge a findingIf you think evidence was missed, reassess the pattern. The outcome is dated in the history.

This report is a learning diagnostic. It isn’t a hiring certification and doesn’t predict job performance.

Get a report like this on your own work.

SQL-7N4E9 · rubric v1.4 · generated 5 Jul 2026 · conclusions change only with dated evidence