서브쿼리(Subquery)?
- SELECT문 내에 다시 SELECT문을 사용하는 SQL문
- FROM구에 사용하는 인라인 뷰와 SELECT문에 사용하는 스칼라 서브쿼리 등이 존재한다
- WHERE구에 사용시 서브쿼리라 한다.
SELECT *
FROM EMP -- 메인쿼리
WHERE DEPTNO =
(SELECT DEPTNO FROM DEPT -- 서브쿼리
WHERE DNAME = '경영지원부')
▷ 종류
| 종류 | 내용 |
| 단일행 서브쿼리 | - 결과는 반드시 한행만 조회 - 비교연산자(=,>,<,<=,>=,<>) 사용 |
| 다중행 서브쿼리 | - 여러개 행이 조회 - IN, ANY, ALL, EXISTS를 사용 |
▷ 다중행 서브쿼리 연산자
- IN : 서브쿼리의 결과중 하나만 동일하면 참
- ALL : 결과가 모두 동일하면 참
- ANY : 서브쿼리의 결과중 하나 이상 동일하면 참
- EXISTS 서브쿼리의 결과가 하나라도 존재하면 참
▷ 스칼라 서브쿼리
- 한 행과 한 칼럼만 반환
- 여러행 반환시 오류가 발생
SELECT (SELECT AVG(SAL)
FROM EMP ) AS '급여 평균' -- 스칼라 서브쿼리
, SAL AS '급여'
FROM EMP
WHERE EMPNO = 1001
다중행 서브쿼리와 관련이 있는 것은? (답 : 2)
① =
② IN
③ >
④ <
그룹 함수(Group Function)?
▷ ROLLUP
- GROUP BY 칼럼에 대해서 SUBTOTAL(전체 합계)을 만들어준다
- 순서에 따라 결과가 달라진다
▷ GROUPING 함수
- ROLLUP, CUBE, GROUPING SETS에서 생성되는 합계값을 구분하기 위해 만들어진 함수
- 계산이 되면 1을 반환, 그렇지 않으면 0을 반환
▷ GROUPING SETS
- GROUP BY에 나오는 칼럼의 순서와 관계없이 다양한 소계를 만들어 낼 수 있다.
- 칼럼의 순서와 관계없이 개별적으로 모두 처리
▷ CUBE
- 결합가능한 모든 집계를 계산
- EX) 부서별 합계, 직업별 합계, 부서별 직업별 합계, 전체 합계
- 조합할 수 있는 모든 경우의 수가 조합
'기타 > SQLD 자격증' 카테고리의 다른 글
| 14. SQL 최적화의 원리(SQLD 자격증 공부) (0) | 2022.02.24 |
|---|---|
| 13. 윈도우 함수 (SQLD 자격증 공부) (0) | 2022.02.21 |
| 11. SQL 조인과 계층형 조회 (SQLD 자격증 공부) (0) | 2022.02.14 |
| 10. SQL 기본3 (SQLD 자격증 공부) (0) | 2022.02.10 |
| 9. SQL 내장형 함수 (SQLD 자격증 공부) (0) | 2022.02.10 |