SQL - JOIN(3), QUERY

돼자·2023년 3월 14일

SQL 복습

목록 보기
8/9

SQL은 쉬운것 같으면서 어려운 것같다.
수업 듣고 문제보며 생각하면 기억나는데
막상 복습할때 가물가물하다.
뒤로 갈수록 SQL 복습 비중이커서 걱정이다.
아직 처음 해보는거니까 계속 반복해보자.

ROLLUP 연산자와 함께 GROUP BY절 사용(그룹 값 요약)

ROLLUP : 좌우 합계를 내는 형태의 보고서에 사용

SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY ROLLUP(DEPTNO,JOB) ORDER BY DEPTNO;

CUBE 연산자와 함께 GROUP BY절 사용(GROUP BY절을 기준으로 그룹의 모든 가능한 조합을 만들고 요약하여 출력)

CUBE : 상하 합계를 내는 형태의 보고서에 사용

SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY CUBE(DEPTNO,JOB) ORDER BY DEPTNO;

CUBE는 복잡해서 사용을 잘 안한다고 하심..

SUB QUERY

SUBQUERY는 다른 하나의 SQL 문장의 절에 포함된 SELECT 문장
SELECT, UPDATE, DELETE, INSERT와 같은 DML문과 CREATE TABLE 또는 VIEW에서 이용
알려지지 않은 조건에 근거한 값들을 검색하는 SELECT 문장을 작성하는데 유용
SUBQUERY는 MAIN QUERY가 실행되기 이전에 한번 실행
SUBQUERY는 괄호로 묶어서 사용
SUBQUERY는 연산자의 오른쪽 적용
SUBQUERY는 FROM, WHERE, HAVING에서 사용

단일 행 서브쿼리

SELECT ENAME, JOB FROM EMP WHERE JOB = (SELECT JOB FROM EMP WHERE EMPNO = 7369);

사원 테이블에서 BLAKE보다 급여가 많은 사원들의 사번, 이름, 급여를 검색

SELECT EMPNO, ENAME, SAL FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE SAL = 'BLACK');

사원 테이블에서 MILLER보다 늦게 입사한 사원의 사번, 이름, 입사일 검색

SELECT EMPNO, ENMAE, HIREDATE FROM EMP WHERE HIREDATE > (SELECT HIREDATE FROM EMP WHERE ENAME = 'MILLER');

사원 테이블에서 사원 전체 평균 급여보다 급여가 많은 사원들의 사번, 이름, 급여를 검색

SELECT EMPNO, ENAME, SAL FROM EMP WHERE SAL > (SELECT AVG(SAL) FROM EMP);

사원 테이블에서 CLERK와 같은 부서코드이면서 사번이 7698인 직원의 급여보다 많은 급여를 받는 사원들의 사번, 이름, 급여를 검색

SELECT EMPNO, ENAME, SAL FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME = 'CLERK') AND SAL > (SELECT SAL FROM EMP WHERE EMPNO = 7698);

사원 테이블에서 부서별 최대 급여를 받는 사원들의 사번, 이름, 부서코드, 급여를 검색

SELECT EMPNO, ENAME, DEPTNO, SAL FROM EMP WHERE SAL IN(SELECT MAX(SAL) FROM EMP GROUP BY DEPTNO);

SELECT ENAME, DEPTNO FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM EMP ENAME = 'SCOTT');

SELECT* FROM EMP WHERE JOB = (SELECT JOB FROM EMP WHERE ENAME = 'SCOTT');

SELECT ENAME, SAL FROM EMP WHERE SAL >= (SELECT SAL FROM EMP WHERE ENAME = 'SCOTT');

SELECT ENMAE, E.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND LOC = 'DALLAS');
SELECT ENAME, DEPTNO FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE LOC = 'DALLAS');

SELECT ENAME, SAL FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'SALES');

0개의 댓글