089 계층형 질의문으로 서열을 주고 데이터 출력하기 1
계층형 질의문은 서열이 있는 데이터에서 서열을 출력하는 SQL문법
사원 테이블에는 서열이 존재 > 숨어있는 서열을 화면에 표시하는 것
서열에 관련된 컬럼은 mgr > mgr을 이용해서 서열을 출력
-- 사원번호, 이름, 관리자번호 출력
select empno, ename, mgr
from emp;
-- 사원이름, 서열, 월급, 직업을 출력하세요
select ename, level, sal, job
from emp
start with ename = 'KING' -- 보고 싶은 서열1위에 해당하는 사원
connect by prior empno = mgr; -- empno 가 mgr인 사원 > ... > empno가 mgr인 사원 으로 엮어서 서열을 부여
문제466.CLARK을 시작점으로 두고 서열 순서를 출력하시오
사원번호, 이름, 서열, 월급, 직업을 출력하시오
select empno, ename, level, job, sal
from emp
start with ename = 'CLARK'
connect by prior empno = mgr;
문제467. KING을 시작점으로 두고 서열순서로 사원테이블의 컬럼을 출력하는데 이름, 서열, 직업, 월급을 출력하는데 월급이 2400이상인 사원들만 출력하시오
select ename, level, job, sal
from emp
where sal >= 2400
start with ename = 'KING'
connect by prior empno = mgr;
문제468. ppt예제처럼 level만큼 앞에 공백을 채워 넣어서 이름,서열,직업,월급이 출력되게 하시오
select rpad(' ',level*3) || ename as employee, level, job, sal
from emp
start with ename = 'KING'
connect by prior empno = mgr;
예전에 배울때는 rpad(sal,10,'*')와 같이 출력함. 월급을 출력하는데 전체 10자리 잡고 나머지 공간에 *을 채워넣어라는 뜻 > 하지만 현재 rpad(' ',12)와 같이 인자 2개만 사용함. 공백(' ')을 12개 채워넣어라 라는 뜻
090 계층형 질의문으로 서열을 주고 데이터 출력하기 2
문제469. 위의 결과에서 BLAKE는 제외하고 출력하시오
select rpad(' ',level*3) || ename as employee, level, job, sal
from emp
where ename != 'BLAKE'
start with ename = 'KING'
connect by prior empno = mgr;
계층형 질의문 결과에서 특정행만 제외하려면 where절에 제외시킬 검색조건을 적어줘야함.
문제470. 이번에는 BLAKE뿐만 아니라 BLAKE의 팀원들가지 제외시켜서 출력하시오
select rpad(' ',level*3) || ename as employee, level, job, sal
from emp
start with ename = 'KING'
connect by prior empno = mgr and ename != 'BLAKE';
팀장뿐만 아니라 팀원들까지 같이 출력해서 제외시키고 싶다면 where절이 아니라 connect by절에 제외시킬 팀장을 기술하면 됨
문제471. 이번에는 BLAKE와 BLAKE의 팀원들 뿐만 아니라 CLARK과 CLARK의 팀원들도 출력에서 제외시키시오
select rpad(' ',level*3) || ename as employee, level, job, sal
from emp
start with ename = 'KING'
connect by prior empno = mgr and ename not in ('BLAKE','CLARK');
문제472. 숫자를 1부터 10까지 출력하시오
select level
from dual
connect by level <= 10;
--connect by절에 기술한 숫자만큼 1번부터 해당숫자까지 출력이 되어짐.
문제473. (오늘의 마지막 문제) 1부터 100까지의 숫자의 합은 얼마인가 ?
select sum(level)
from dual
connect by level <= 100;
'Study > class note' 카테고리의 다른 글
sql중급 / 계층형 질의문3,4 (0) | 2021.11.23 |
---|---|
문제5. SQL / 서브쿼리 튜닝 및 조인 (0) | 2021.11.22 |
sql중급 / 서브쿼리를 사용한 update, delete, merge (0) | 2021.11.22 |
sql중급 / 서브쿼리를 사용한 insert문 (0) | 2021.11.18 |
sql 중급 / DML(commit, rollback, merge, lock, select for update) (0) | 2021.11.18 |