STAGE 1: Understand the grain
Concept: A learner, enrollment and activity are separate entities.
Task: Design keys and relationships for three small tables.
Acceptance: A learner can have more than one enrollment without being duplicated in the learner table.

My assumptions:

My work / file link:

My checks and results:

What I changed:


STAGE 2: Write clear queries
Concept: Filtering and grouping change which question is answered.
Task: Write counts by course and an exception report for missing activity.
Acceptance: Use an outer join when retaining unmatched enrollments is required.

My assumptions:

My work / file link:

My checks and results:

What I changed:


STAGE 3: Test edge cases
Concept: Happy-path rows do not reveal all query errors.
Task: Add a duplicate activity, a null status and a learner with no activity to the fixture.
Acceptance: Explain how COUNT(*) differs from COUNT of a nullable joined column.

My assumptions:

My work / file link:

My checks and results:

What I changed:


STAGE 4: Package a report
Concept: Reproducibility includes assumptions and execution order.
Task: Provide schema setup, queries and a result interpretation with limitations.
Acceptance: A reviewer can recreate the fixture without a cloud account.

My assumptions:

My work / file link:

My checks and results:

What I changed:
