[SQL] 분석함수 RANK

·2025년 7월 3일
0

SQL

목록 보기
56/126

예제 답

select ename, job, sal, rank() over (order by sal desc) 순위
 from emp
 where job in ('ANALYST', 'MANAGER');

💡 rank() over (order by ...)
over(): ()안에 있는 것을 확장해서 출력하라


문제1. emp21 테이블에서 이름과 나이와 나이에 대한 순위를 출력하시오

select ename, age, dense_rank () over (order by age desc) 순위
 from emp21;

💡 dense_rank() over (order by ...)
: 공동 순위가 있을 때 그 다음 순위를 다음 숫자로 출력
ex. 1 - 2 - 2 - 3
dense 안쓰면 1 - 2 - 2 - 4


문제2. 직업이 SALESMAN인 사원들의 이름과 월급, 입사일, 순위를 출력하는데 순위가 먼저 입사한 사원순으로 순위를 부여하시오

select ename, sal, hiredate, rank() over (order by hiredate) 순위
 from emp
 where job='SALESMAN';

문제3. emp21 테이블에서 통신사 LG U+ 를 LG 로 변경하시오

update emp21
 set telecom='LG'
 where  ename='000';
 
 select * from emp21;
 
 COMMIT;
 
 delete from emp21 where ename='0000';
 
 commit;

문제4. 부서번호, 이름, 월급, 순위를 출력하는데 순위가 부서번호별로 각각 월급이 높은 순서대로 순위를 부여하시오

select deptno, ename, sal, rank() over(partition by deptno
                                       order by sal desc nulls last) as 순위
 from emp;

💡 partition by: rank 함수에서 각각 뽑을 때 사용


문제5. 통신사, 이름, 나이, 순위를 출력하는데 순위가 통신사별로 각각 나이가 높은 순서대로 순위를 부여하시오

select telecom, ename, rank() over(partition by telecom
                                   order by age desc) as 순위
 from emp21;

0개의 댓글