Skip to solution
easyDSA

Top-N per group with RANK() OVER (PARTITION BY) — how do you get top 2 per department without collapsing rows?

1.2k views
01

Understand the problem

Use window RANK() to rank within partitions and filter the ranked CTE; compare with GROUP BY limits.

window-functionsrankpartition
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Nudge consolestandby

Stuck? Beam a request up — the console returns a conceptual nudge that guides your logic without spoiling the implementation.

03

Study the solution

RANK() OVER (PARTITION BY dept ORDER BY score DESC) numbers rows within each partition without collapsing them; wrap in a CTE and filter WHERE rnk <= N for top-N per group. Ties share a rank and leave gaps — use DENSE_RANK or ROW_NUMBER when gaps matter.

Solution ready — 2 min read

Classified // press E to declassify

04

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.

Transmission complete // awaiting log

KEEP THE
STREAK ALIVE.

Dossier 2 of 70 decoded in the SQL track. One more won't hurt.

Back to track