✅ SQL Window Functions Interview Questions with Answers ✍️
1. What are window functions in SQL?
• Window functions perform calculations across related rows
• They do not reduce rows
• Each row keeps its detail
Key syntax: OVER (PARTITION BY, ORDER BY)
2. Difference between GROUP BY and window functions
• GROUP BY collapses rows
• Window functions keep all rows
• Window functions add calculated columns
3. What is ROW_NUMBER?
• Assigns unique sequential number
• No ties allowed
Example: Rank employees by salary
SELECT name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) AS rn
FROM employees;
4. Difference between ROW_NUMBER, RANK, and DENSE_RANK
• ROW_NUMBER gives unique numbers
• RANK skips numbers on ties
• DENSE_RANK does not skip
Example salaries: 100, 100, 90
ROW_NUMBER → 1, 2, 3
RANK → 1, 1, 3
DENSE_RANK → 1, 1, 2
5. What is PARTITION BY?
• PARTITION BY splits data into groups
• Window function runs inside each group
Example: Rank employees per department
SELECT department, name, salary,
RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS dept_rank
FROM employees;
6. Find top 2 salaries per department
SELECT * FROM (
SELECT department, name, salary,
DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rnk
FROM employees
) t
WHERE rnk <= 2;
7. What is LAG?
• Accesses previous row value
• Used for comparisons
Example: Day over day sales
SELECT date, sales, LAG(sales) OVER (ORDER BY date) AS prev_day_sales
FROM daily_sales;
8. What is LEAD?
• Accesses next row value
Example: Compare today with next day
SELECT date, sales, LEAD(sales) OVER (ORDER BY date) AS next_day_sales
FROM daily_sales;
9. Calculate day over day growth
SELECT date, sales - LAG(sales) OVER (ORDER BY date) AS growth
FROM daily_sales;
10. Common window function interview mistakes
• Forgetting ORDER BY inside OVER
• Using WHERE instead of subquery to filter ranks
• Mixing GROUP BY with window logic incorrectly
Execution order: FROM → WHERE → GROUP BY → HAVING → SELECT → WINDOW → ORDER BY
Double Tap ♥️ For More
Post #2250
3.11K
- ❤ 5
- 👍 2