Your question is SQL Top 3 Rows Per Group Using CTE. Start with the requirements and the one table on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
Write a SQL query using a CTE to find the top 3 rows per group.
Use the grouped_records table. Rank rows by score from highest to lowest within each group_name; place NULL scores last and break score ties by ascending id.
group_name.group_name, id as row_id, row_value, and score.group_name, then rank within the group.| Column | Type | Description |
|---|---|---|
| idPK | INT | Unique row identifier |
| group_name | VARCHAR(50) | Group to which the row belongs |
| row_value | VARCHAR(100) | Descriptive value associated with the row |
| score | INT | Score used to determine row order |