SELECT - 서브쿼리
1. 서브쿼리

- SELECT(), FROM() 절을 하나의 쿼리로 생각하면, 쿼리 안에 쿼리를 작성하는 방법으로 활용 가능하다.
2. SELECT() 절 서브쿼리

- 전체급여를 하나의 컬럼으로 만들어서 표시해주고 싶다면?
- SELECT() 절 안에 SELECT() 절을 작성하면 가능하다.
- 이렇게 하면 원본테이블을 수정하지 않고 원하는 결과를 출력할 수 있다.

- SELECT() 절의 서브쿼리는 'scala 서브쿼리'라고 부르기도 한다.
- 출력되는 행 수만큼 반복되어 실행된다.
- 데이터를 반복해서 출력하기 때문에, 성능의 효율성을 위해 데이터를 메모리에 올려놓고 반복해서 출력하게되고 이를 '메모리캐싱'이라고 한다.
3. SELECT() 절 서브쿼리 확장

- 테이블을 JOIN() 한 것처럼 사용가능하다.
4. OVER() 함수
- OVER() 라는 window 함수를 사용해서 전체 직원의 누적급여를 출력 가능하다.
- OVER() 함수는 쿼리 결과 집합 내의 원도우 또는 사용자 지정 행 집합을 정의한다.

- 결과가 같은 것을 확인할 수 있다.
- OVER 옆 괄호에 아무것도 작성하지 않았기 때문에, 전체에 대한 누적합을 출력하였다.

- 출력 결과가 동일 한 것을 볼 수 있다.
- PARTITION BY를 사용하면, 특정 열을 기준으로 데이터를 나눈다. 따로 지정하지 않으면 쿼리 결과 집합의 모든 행이 단일 그룹으로 취급된다.
- GROUP BY() 기능과 동시에 사용할 수는 없기 때문에, 상위쿼리 기준으로 작성해야 한다.
- 누적별 집계값은 SELECT() 절 서브쿼리보다 window함수를 사용하는 것이 좋다.
26일차 인증!


'클래스 리뷰 > 22.05 빡공단 SQL 강의' 카테고리의 다른 글
빡공단 22기 도전기 - SQL WHERE 서브쿼리 (28일차) (2) | 2022.12.07 |
---|---|
빡공단 22기 도전기 - SQL FROM 서브쿼리 (27일차) (0) | 2022.12.07 |
빡공단 22기 도전기 - SQL 실전 데이터 분석 (25일차) (0) | 2022.12.07 |
빡공단 22기 도전기 - SQL 기타 JOIN (24일차) (0) | 2022.12.07 |
빡공단 22기 도전기 - SQL OUTER JOIN (23일차) (0) | 2022.12.07 |
댓글