본문 바로가기
[스파르타코딩클럽]데이터분석 과정/LEARN

SQLD 공부 (4) SQL 활용

by doo_ 2024. 2. 23.

1. 서브쿼리

> 하나의 쿼리 안에 존재하는 또 다른 쿼리를 말한다. 위치에 따라 다음과 같이 나뉜다.

1) 스칼라 서브쿼리(Scalar Subquery)

> 주로 SELECT 절에서 사용하지만, 칼럼이 올 수 있는 대부분 위치(UPDATE문의 SET절, ORDER BY절 등)에 사용할 수 있다. 값은 반드시 하나의 값만 반환해야 한다.

2) 인라인 뷰(Inline View)

> FROM 절에서 사용

3) 중첩 서브쿼리

> WHERE절과 HAVING절에서 사용

> 메인쿼리와 관계 여부에 따라 비연관 / 연관 서브쿼리로 나뉜다.

2. 뷰(VIEW)

> 가상 테이블로 실제 데이터를 저장하지는 않고 해당 데이터를 조회해오는 것이다.

CREATE VIEW VIEW_NAME AS ( 
    SELECT ~
    FROM ~
    )

 

3. 집합 연산자

1) UNION (ALL) : 각 쿼리의 결과 집합의 합집합을 출력, ALL을 붙이면 중복 포함

2) INTERSECT : 각 쿼리의 결과 집합의 교집합

3) MINUS/EXCEPT : 차집합으로 오른쪽 집합의 결과 집합을 제거하고 왼쪽 집합의 결과를 출력한다.

SELECT 쿼리문
UNION / INTERSECT / EXCEPT ---
SELECT 쿼리문

 

4. 그룹함수 중 소계(총계)함수) : GROUP BY절에 쓴다.

1) ROLLUP( ) : 소그룹 간의 소계 및 총계를 계산해준다.

2) CUBE( ) : 소그룹 간의 소계 및 총계를 다차원적으로 계산할 수 있는 함수다.

3) GROUPING SETS () : 특정 항목에 대한 소계를 계산하는 함수다. 인자값으로 ROLLUP이나 CUBE를 사용할 수 있다.

4) GROUPING : 소계를 구분할 수 있게 해주는 함수로 SELECT절에서 쓴다.

 

5. 윈도우 함수

> 순위 : RANK, DENSE_RANK, ROW_NUMBER

> 집계 : SUM, MIN, MAX, AVG, COUNT

> 행 순서 : FIRST_VALUE, LAST_VALUE, LAG, LEAD

> 비율 : CUM_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT

 function() OVER(PARTITION BY column ORDER BY column)

 

6. Top-N 쿼리 : 보통 순위함수를 통해 구한다.

7. 셀프조인

> 말 그대로 나 자신과의 조인이다. 구분하기 위해 꼭 ALIAS를 반드시 표기해야 한다.

- 일반적으로 대-중-소 구조를 갖는 데이터를 조회할 때 사용하곤 한다.

8. 계층 쿼리

> 계층 구조를 이루는 칼럼이 존재할 때 계층 쿼리를 이용해 데이터를 출력한다.

- LEVEL / SYS_CONNECT_BY_PATH / START WITH / CONNECT BY / PRIOR 등