CodingNeed.

Engineering practice · 25 MIN

Keep every row tied for first place

Ranking semantics are a business decision.

ROW_NUMBER assigns a distinct position, RANK leaves gaps after ties, and DENSE_RANK does not. To keep all highest-value sales per customer, rank each partition by amount descending and filter in a CTE. Exclude null amounts before ranking so an all-null customer has no winner. Window ordering determines rank; outer ORDER BY determines displayed row order.

Treat the function as a small service: define a contract, maintain an invariant, and test the boundaries.

Read the example

SELECT id, DENSE_RANK() OVER (PARTITION BY customer ORDER BY amount DESC) AS position FROM sales WHERE amount IS NOT NULL ORDER BY id;
Check the expected output
[[1,1],[2,1],[3,2],[4,1]]

Your challenge

Return id, customer, amount for every sale tied for the largest non-null amount within its customer. Order by customer then id.

Solution cost: Typically O(n log n) for partition sorting; inspect the actual plan. time · Up to O(n) sort/window workspace; engine dependent. space

Common trap

ROW_NUMBER throws away tied winners.

Further reading: SQLite window functions

Next lesson: Make running totals deterministic →

Essential cookies keep your account signed in. Optional analytics is not configured on this site. Your choice does not affect access to lessons.

Read the Privacy Policy. You can change this choice in the footer.