SQLD 벼락치기 1일
서브쿼리
서브쿼리 종류
스칼라
서브쿼리 :select
구문 안에서 사용되면 스칼라 서브쿼리1
SELECT A.EMPLOYEE_ID, ..., (SELECT B.DEPT_NAME FROM TABLENAME as B ...) from TABLENAME as A
- 인라인뷰 서브쿼리 :
from
뒤에 오는 서브쿼리1
SELECT * FROM (SELECT A.DEPT_NAME FROM TABLENAME AS A)
- 중첩서브쿼리 :
where
절에 오는 서브쿼리. 보통 일반적인 서브쿼리는 이 중첩서브쿼리를 말한다.1 2
SELECT * FROM TABLENAME WHERE DEPT_NAME IN (SELECT DEPT_NAME FROM TABLENAME)
서브쿼리의 특징
- 스칼라 서브쿼리에는
order by
구를 사용할 수 없다. 반면, 인라인뷰 서브쿼리는ORDER BY
구 사용이 가능하다. - 서브쿼리에서 여러 개의 행 이 반환 되면
IN
,ANY
,ALL
같은 다중행 서브쿼리 함수를 사용해야 한다.(=
,<
,!=
같은 논리 연산자를 사용할 수 없기 때문) - 서브쿼리에는 메인쿼리 컬럼을 쓸 수 있으나 메인쿼리에서는 서브쿼리의 컬럼을 사용할 수 없다.
그룹함수
그룹함수 종류
GROUP BY
: pandas나 일반 sql에서도 널리 쓰이는 그룹 함수.ROLLUP (column1, column2, ...)
: 피벗 테이블 중간중간 집계함수 결과를 집어넣을 때처럼 사용한다.CUBE (column1, column2, ...)
: 수학 집합 개념에서 나온 부분집합의 집합을 생각하면 된다. 경우의 수는 $2^{column}-1$ 이며 전체집합에서 공집합 순서로 결과가 출력된다.GROUPING SETS(column1, column2, ...)
: 각 속성(컬럼)별 그룹화 결과물을 출력한다. 즉,column1
그룹형 테이블 다음 행에column2
그룹형 테이블이 따라오는 식이다.GROUPING (column1, column2, ...)
This post is licensed under CC BY 4.0 by the author.