핵심 원리
SQL의 RANK()
함수는 데이터 분석 함수 중 하나로, 데이터의 순위를 매기는 데 사용됩니다. RANK()
함수는 지정된 기준에 따라 데이터 집합의 각 행에 순위를 부여하며, 동일한 값이 있는 경우 동일한 순위를 할당하지만, 그다음 순위는 건너뛰게 됩니다.
실무에서 쓰이는 이유
RANK()
함수는 데이터 분석에서 매우 유용합니다. 특히, 매출 순위, 성적 순위 등 순위를 매겨야 하는 다양한 비즈니스 시나리오에서 활용됩니다. 순위에 따라 데이터를 필터링하거나 분석해야 할 때, RANK()
함수는 매우 효율적입니다.
실무에서 구체적으로 어떤 상황일 경우 사용 되는지 예상 상황 예측
- 매출 순위 분석: 각 판매원별로 매출액에 따른 순위를 부여하여, 성과가 우수한 판매원들을 식별하는 데 사용될 수 있습니다.
- 경쟁 분석: 동일한 카테고리 내의 제품들을 매출, 평점 등의 기준으로 순위를 매겨, 시장 내의 경쟁 상황을 분석하는 데 활용할 수 있습니다.
- 직원 성과 평가: 연봉이나 성과를 기준으로 직원들 간의 순위를 매겨, 인센티브나 보너스를 차등 지급하는 기준으로 사용할 수 있습니다.
연습 문제
- 부서별로 직원의 급여 순위를 매겨라.
- 각 부서에서 상위 3위 이내에 속하는 직원만 조회하라.
연습문제 해답
SELECT deptno, ename, sal, RANK() OVER (PARTITION BY deptno ORDER BY sal DESC) AS 순위 FROM emp;
SELECT * FROM (
SELECT deptno, ename, sal, RANK() OVER (PARTITION BY deptno ORDER BY sal DESC) AS 순위
FROM emp
) WHERE 순위 <= 3;
응용 문제
- 전체 직원 중에서 연봉이 높은 순으로 순위를 매기되, 동일한 연봉을 가진 직원은 같은 순위를 부여하고, 그다음 순위는 건너뛰도록 하라.
- 부서별로 직원의 성과 점수를 기준으로 순위를 매기되, 동일한 점수를 가진 직원은 같은 순위를 부여하라. 그다음 순위는 건너뛰지 않고 부여되도록 하라.
응용문제 해답
SELECT ename, sal, RANK() OVER (ORDER BY sal DESC) AS 순위 FROM emp;
SELECT deptno, ename, score, DENSE_RANK() OVER (PARTITION BY deptno ORDER BY score DESC) AS 순위
FROM emp;