Interview-এর favourite window functions।
Data:
Score
100
100
90
80
ROW_NUMBER
100 → 1
100 → 2
90 → 3
80 → 4
Tie consider করে না।
RANK
100 → 1
100 → 1
90 → 3
80 → 4
Tie-এর পরে gap।
DENSE_RANK
100 → 1
100 → 1
90 → 2
80 → 3
Gap নেই।
Top 3 per City
WITH ranked AS (
SELECT
user_id,
city,
revenue,
DENSE_RANK() OVER (
PARTITION BY city
ORDER BY revenue DESC
) AS rnk
FROM customer_revenue
)
SELECT *
FROM ranked
WHERE rnk <= 3;
এই pattern অবশ্যই practice করবেন।