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 করবেন।