본문 바로가기
클래스 리뷰/22.05 빡공단 SQL 강의

빡공단 22기 도전기 - SQL SELECT 서브쿼리 (26일차)

by 직_장인 2022. 12. 7.

 

 
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일차 인증!

 

 

댓글