본문 바로가기

전체 글

(142)
SQL Oracle Join - NON Equi join 여러 테이블 조인 (컬럼간 연결고리 = X) 조인하려는 테이블들 사이의 연결 조건이 = (이퀄) 이 아닌경우엔 BETWEEN AND 나 연산자 를 이용하여 Non equi join 을 한다. 예제 : select e.ename,e.sal, s.grade from emp e, salgrade s where e.sal between s.losal and s.hisal; 같은 퀄럼이 있다면 equi join 을 쓰면 되는데 위의 컬럼은 같은 컬럼이 없다. where 절에 쓰인 조인 문법을 해석해 보자면 e.sal 에 있는 월급이 s.grade 에 있는 s.losal 과 s.hisal 사이에 존재한다! 문제 290 : 직업이 SALESMAN 인 사원들의이름, 월급과 급여 등급(GRADE) 를 출력하시오 select e.ename, e.sal, s.grad..
SQL Oracle Join - Equi join 여러 테이블 조인 (공통컬럼 O) 조인이 필요한이유? 하나의 테이블에서는 알 수 없는 정보를 다른 테이블과 결합함으로써 다양한 여러 정보를 함께 출력해 낼 수 있도록 합니다. 조인을 할때에는 where 절에 조인 조건문을 꼭 작성해 주어야한다. 예제 58 조인 조건문을 이용하여 이름과 지역을 출력하기. select ename, loc from emp, dept where emp.deptno = dept.deptno; → where 절에 꼭 조인조건을 적어주어야한다 (검색조건 아님!!!! ) deptno 의 컬럼은 두 테이블(emp,dept)의 공통된 연결 고리이다. 이 문장을 조건문으로 적어주는것이 equi join 조인조건이다. 문제 276 이름이 스캇인 사원의 이름, 부서위치 출력 select ename, loc from emp, d..
SQL fetch first ___ rows only - 출력되는 행 제한시키기 출력되는 행 제한하기 (fetch first 몇개 rows only) rownum 을 쓰면서 서브쿼리 안쓰고 간단하게 순위를 출력하는방법 문제 269 :이름,월급,직업 출력 월급이 높은 사원 부터 출력 select ename, sal, job from emp order by sal desc; 문제 270 : 위의 출력 결과에서 위쪽 네명만 출력하시오 select ename, sal, job from emp order by sal desc fetch first 4 rows only; → ordering 된 (정렬된결과에서 ) 위의 4개의 행만 출력합니다. 문제 : 통신사가 kt 인 학생들의 이름, 나이, 통신사를 출력하는데 나이가 많은 순서대로 정렬된결과에서 위의 3명의 학생들만 출력하시오 select e..
SQL ROWNUM - 출력되는 행 제한시키기 ROWNUM( 감추는 컬럼 ), 출력되는 행 제한 앞에서 배운 ROW_NUMBER 와 비슷한 기능을 갖는 함수이다. ROW_NUMBER 함수는 : order by 절을 반드시 사용 ROWNUM 함수는 : order by 절 없이 출력되는, 행 그대로 번호를 부여할 수 있는 shadow (감춰진) 컬럼 -> 모든 테이블에 존재한다. select rownum, empno, ename, sal from emp; select rownum, empno, ename, sal from emp where deptno = 20; → 부서번호가 20 번인 사원들만 출력하면서 rownum 번호를 부여해 준다. 문제 265 select rownum, empno, ename, sal from emp where deptno = ..
SQL 데이터 변환 - Pivot , Unpivot ROW 를 COLUMN 로 출력하기 (2) PIVOT pivot = 회전하다. SUMDECODE 는 너무 길어서 PIVOT 으로도 행을 컬럼으로 출력 할 수 있다. 행을 컬럼으로 출력하는 함수 : PIVOT 컬럼을 행으로 출력하는 함수 : UNPIVOT 지금까지 SUM+DECODE문으로 출력했는데 PIVOT 문으로도 가로로 출력 할 수 있다. 쿼리 실행 순서 : from - pivot - select from 절에서 : 필요한 컬럼만 선정하는것 (select 절로) pivot 문에는 from 절에서 선정한 컬럼명만 쓸 수 있다. 예제 : 부서번호와 부서번호별 토탈월급을 출력하는데 가로로 출력하세요 (데이터를 컬럼으로 빼기) select * from ( select deptno, sal from emp);..
SQL Sum + Decode 컬럼을 행으로 바꿔 출력 컬럼을 ROW로 출력하기 (1)SUM+DECODE 가로로 뽑기전, 세로로 먼저 출력한다. 문제 : 부서번호, 부서번호별 토탈 월급을 일단 세로로 출력한다. select deptno, sum(sal) from emp group by deptno; 문제 : 부서번호, 보너스를 출력 부서번호가 10→ 자기자신의 월급이 출력 그렇지 않으면 그냥 0 이출력 select deptno, decode (deptno , 10 , sal, 0) as 보너스 from emp; → 후에 나온 값을 모두 더해준다.(SUM) 부서번호의 10번의 모든 월급을 더하기 때문에 select 바로앞 deptno 컬럼은 삭제한다. sum 만 씀. select sum(decode (deptno , 10 , sal, 0)) as "10" fr..
SQL 데이터 분석함수 - Row_number 출력결과 넘버링 ROW_NUMBER(출력되는결과를 원하는 컬럼별 순서대로넘버링) row_number() over (order by sal desc) as 별칭 —> ____ 에 order by 문법을 꼭 부여해야한다. →넘버링을 하는이유는, 어떤 출력 되는 결과의 몇번째 행을 출력 시킬때 유용하다. 예제 : row_number 데이터 분석함수는 출력되는 select 문의 결과의 행에 numbering(번호부여) 하는 함수이다. 넘버링의 장점은 : 출력되는 결과의 두번째, 세번째 등등 원하는 행을 출력,검색 할 수 있다. select empno, ename, sal, row_number() over (order by empno asc)번호 from emp where deptno= 20; 위의 식의결과에서 두번째행만 출력 ..
SQL 데이터 분석함수 - 집계결과 출력 Grouping sets Grouping sets cube 와 rollup 을 사용하기 편리하게 도와주는 것 grouping sets( (그룹핑할 컬럼1), (그룹핑할컬럼2) , () ) select deptno, job, sum(sal) from emp group by grouping sets ((deptno), (job),()) order by deptno, job asc; → rollup 과 cube 보다 출력되는 결과를 더 쉽고 정확하게 예측 할 수 있습니다. → () 의 의미는 전체 집계이다. → 그룹핑할 컬럼에 ( ) 괄호로 둘러주어야한다. 문제 246 : 아래의 sql 결과를 rollup 이용하지말고 grouping sets 로 수행하시오 select deptno, sum(sal) from emp group by g..