본문 바로가기

기타/SQLD 자격증

12. 서브쿼리와 그룹함수(SQLD 자격증 공부)

서브쿼리(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) 부서별 합계, 직업별 합계, 부서별 직업별 합계, 전체 합계
  • 조합할 수 있는 모든 경우의 수가 조합