문법 · SQL · intermediate

윈도우 함수 맛보기: RANK · OVER

GROUP BY 없이 행을 유지한 채 순위를 매기는 감각.

배우기 · SQL 문법 · 16분 · 6/14 · sql · 윈도우

이 트랙 목차 (14)
  1. 1. SELECT · WHERE · ORDER · LIMIT
  2. 2. JOIN: INNER · LEFT와 없는 행 찾기
  3. 3. GROUP BY · 집계 · HAVING
  4. 4. 서브쿼리·IN·존재 여부
  5. 5. CASE · NULL · COALESCE
  6. 6. 윈도우 함수 맛보기: RANK · OVER
  7. 7. ORDER BY · LIMIT · DISTINCT
  8. 8. INSERT · UPDATE · DELETE 맛보기
  9. 9. 스칼라 함수 (UPPER · ROUND…)
  10. 10. 함수 응용 (INSTR · CAST · GROUP)
  11. 20. CASE · HAVING · LIKE
  12. 21. JOIN · NULLIF · DISTINCT
  13. 22. ROUND · LEFT JOIN · GROUP_CONCAT
  14. 23. UNION · INTERSECT · WITH

GROUP BY와 차이

GROUP BY는 행을 줄입니다. 윈도우 함수는 행 수를 유지하면서 순위·누적 값을 옆 칸에 붙입니다.

SELECT name, score,
  RANK() OVER (ORDER BY score DESC) AS rnk
FROM players;

OVER 절

RANK() OVER (
  PARTITION BY dept
  ORDER BY score DESC
) AS dept_rank

RANK vs ROW_NUMBER

문제 예제의 정의를 먼저 확인하세요.

연습

RANK/윈도우 태그에서 전체 순위부터 맞춘 뒤, 필요하면 PARTITION을 추가하세요.

상위 N 감각

SELECT * FROM (
  SELECT name, score,
    ROW_NUMBER() OVER (ORDER BY score DESC) AS rn
  FROM players
) t
WHERE rn <= 3;

엔진이 서브쿼리·윈도우를 지원하는지 문제 설명을 따릅니다.

한 줄

> 행을 유지한 채 순위를 붙이면 윈도우, 줄이려면 GROUP BY.

체크리스트

  1. 행을 줄여야 하나, 유지해야 하나?
  2. 순위 정의가 RANK인가 ROW_NUMBER인가?
  3. 그룹(부서·날짜)마다 다시 세나? → PARTITION

지원 문법은 문제마다 다릅니다. 예제 출력의 동점 처리를 먼저 읽으세요.

한 줄: 행 유지 순위=윈도우, 행 축소=GROUP BY.

더 깊게

읽은 뒤 연습장에서 예제 코드를 한 번 타이핑해 보세요. 눈으로만 보면 하루 뒤 사라집니다.

관련 원리 카드와 문제 태그로 바로 이어서 풀면, 문법·패턴이 한 묶음으로 남습니다.

막히면 30분 규칙: 입력을 로그로 확인 → 기대/실제 한 줄 비교 → 그래도 안 되면 배우기 레슨으로 잠시 복귀.

관련 짧은 원리

관련 문제