Code Examples
-- Without window function (collapses rows)
SELECT grade, AVG(age) FROM students GROUP BY grade;
-- With window function (keeps all rows + adds aggregate column)
SELECT name, grade, age,
AVG(age) OVER (PARTITION BY grade) AS avg_age_in_grade
FROM s...
SELECT name, grade, age,
ROW_NUMBER() OVER (PARTITION BY grade ORDER BY age DESC) AS rank_in_grade
FROM students;
SELECT name, score,
ROW_NUMBER() OVER (ORDER BY score DESC) AS row_num, -- unique rank
RANK() OVER (ORDER BY score DESC) AS rank_val, -- gaps for ties
DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank, -- no gaps
NTILE(4) ...