[SQL] 분석함수 LAG

·2025년 7월 4일

SQL

목록 보기
61/126

📌
LAG: 바로 전 행 출력
LEAD: 바로 다음 행 출력

lag(출력할변수명,1) over (order by 정렬할변수명) as 별칭
lead(출력할변수명,1) over (order by 정렬할변수명) as 별칭

예제 답

select empno, ename, sal, lag(sal,1) over (order by sal asc) as 이전행,
                          lead(sal,1) over (order by sal asc) as 다음행
            from emp
            where job in ('ANALYST','MANAGER');

ㄴ (asc 안써도 됨)


문제1. 사원번호, 사원이름, 바로전행의 사원이름, 바로 다음행의 사원이름을 출력하시오. 사원번호 순으로 정렬해서 출력되게 하세요

select empno, ename, lag(ename,1) over (order by empno) as 이전행,
                     lead(ename,1) over (order by empno) as 다음행
 from emp;

문제2. 이름, 입사일, 바로 전에 입사한 사원의 입사일을 출력하시오. 입사한 순서대로 정렬해서 출력하시오

select ename, hiredate, lag(hiredate,1) over (order by hiredate) "이전 입사일"
 from emp;

문제3. 이름, 입사일, 바로전에 입사한 사원과의 간격일을 다음과 같이 출력하시오

select ename, hiredate,
	   hiredate - lag(hiredate,1) over (order by hiredate) 간격
 from emp;

복습문제. 부서번호, 부서번호별 인원수를 출력하시오

select deptno, count(*)
 from emp
 group by deptno;

복습문제2. 부서번호, 이름, 월급, 순위를 출력하는데 순위가 부서번호별로 각각 월급이 높은 사원부터 순위를 부여하시오

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

복습문제3. 직업, 직업별 토탈월급을 출력하는데 직업별 토탈월급이 4000 이상인것만 출력하시오

select job, sum(sal)
 from emp
 group by job
 having sum(sal) >= 4000;

0개의 댓글