Post

SQLD 벼락치기 1일

서브쿼리

서브쿼리 종류

  1. 스칼라 서브쿼리 : select 구문 안에서 사용되면 스칼라 서브쿼리
    1
    
    SELECT A.EMPLOYEE_ID, ..., (SELECT B.DEPT_NAME FROM TABLENAME as B ...) from TABLENAME as A
    
  2. 인라인뷰 서브쿼리 : from 뒤에 오는 서브쿼리
    1
    
    SELECT * FROM (SELECT A.DEPT_NAME FROM TABLENAME AS A)
    
  3. 중첩서브쿼리 : where절에 오는 서브쿼리. 보통 일반적인 서브쿼리는 이 중첩서브쿼리를 말한다.
    1
    2
    
    SELECT * FROM TABLENAME
    WHERE DEPT_NAME IN (SELECT DEPT_NAME FROM TABLENAME)
    

서브쿼리의 특징

  • 스칼라 서브쿼리에는 order by구를 사용할 수 없다. 반면, 인라인뷰 서브쿼리는 ORDER BY 구 사용이 가능하다.
  • 서브쿼리에서 여러 개의 이 반환 되면 IN, ANY, ALL 같은 다중행 서브쿼리 함수를 사용해야 한다.(=, <, != 같은 논리 연산자를 사용할 수 없기 때문)
  • 서브쿼리에는 메인쿼리 컬럼을 쓸 수 있으나 메인쿼리에서는 서브쿼리의 컬럼을 사용할 수 없다.

그룹함수

그룹함수 종류

  1. GROUP BY : pandas나 일반 sql에서도 널리 쓰이는 그룹 함수.
  2. ROLLUP (column1, column2, ...) : 피벗 테이블 중간중간 집계함수 결과를 집어넣을 때처럼 사용한다.
  3. CUBE (column1, column2, ...) : 수학 집합 개념에서 나온 부분집합의 집합을 생각하면 된다. 경우의 수는 $2^{column}-1$ 이며 전체집합에서 공집합 순서로 결과가 출력된다.
  4. GROUPING SETS(column1, column2, ...) : 각 속성(컬럼)별 그룹화 결과물을 출력한다. 즉, column1 그룹형 테이블 다음 행에 column2 그룹형 테이블이 따라오는 식이다.
  5. GROUPING (column1, column2, ...)
This post is licensed under CC BY 4.0 by the author.