SQL 첫걸음 - 5장

채원·2023년 10월 7일
0

5장에서는 집계함수를 사용해 전체 데이터베이스를 집계하고, 서브쿼리의 개념과 이를 어떻게 사용하는 지를 배운다.

집계함수

SQL의 집계함수란, 인수로 집합을 지정하여 결과를 반환하는 함수이다. 집계함수로는 다음이 있다.

  • COUNT
    행의 개수를 구한다.
  • SUM
    집합의 합계를 구한다. 수치형 집합만 지정 가능하다.
  • AVG
    집합의 평군을 구한다. 수치형 집합만 지정 가능하다.
  • MIN, MAX
    집합의 최소, 최대값을 구한다. 수치형 집합만 지정 가능하다.

그룹화 - GROUP BY

지정된 열의 값이 같은 행을 GROUP BY로 묶을 수 있다. 이때, 집계함수를 이용해서 사용해서 그룹을 인수로 넘기면 그 값을 사용할 수 있다.

HAVING 구

집계함수를 WHERE 구에서 사용하는 것은 불가능하다. 이유는, GROUP BY보다 WHERE 구가 먼저 실행되기 때문에, 그룹화를 하기 전 집계연산을 하는 것은 올바른 값을 리턴하지 못하기 때문이다.
따라서 이런 상황에는 HAVING 구를 사용해야 한다. HAVING 구에 집계함수를 사용하면 원하는 대로 집계함수를 사용해 조건식을 지정할 수 있다.

서브쿼리

서브쿼리란 SELECT를 통해 값을 반환하는 것을 의미한다. 종류에는 크게 네 가지가 존재한다.

  • 하나의 값을 반환하는 패턴
  • 복수의 행이 반환되지만 열은 하나인 패턴
  • 하나의 행이 반환되지만 열이 복수인 패턴
  • 복수의 행, 복수의 열이 반환되는 패턴

이때 첫 번째와 같은 경우를 스칼라 값을 반환한다고 한다. 이 경우는 특별한데, 그 이유는 서브쿼리로써 사용하기 편리하기 대문이다.

상관 서브쿼리

상관 서브쿼리란, 부모 명령과 자식인 서브 쿼리가 특정 관계를 맺는 것을 의미한다.
이 때, 서브쿼리는 부모 명령과 연관되어 처리되기 때문에 서브쿼리 부분만을 따로 떼어내어 실행시킬 수 없다.

이 상관 서브쿼리는 주로 EXIST 명령과 함께 사용된다. EXIST 명령을 사용하면, 해당 서브쿼리가 부모 쿼리에 존재하는지를 확인할 수 있다.

EXIST 외에도 IN 이라는 연산자가 있다. 이 연산자 또한 IN 뒤의 집합이 찾고자 하는 집합에 존재하는지를 리턴한다.

profile
학부생

0개의 댓글