5장에서는 집계함수를 사용해 전체 데이터베이스를 집계하고, 서브쿼리의 개념과 이를 어떻게 사용하는 지를 배운다.
SQL의 집계함수란, 인수로 집합을 지정하여 결과를 반환하는 함수이다. 집계함수로는 다음이 있다.
지정된 열의 값이 같은 행을 GROUP BY로 묶을 수 있다. 이때, 집계함수를 이용해서 사용해서 그룹을 인수로 넘기면 그 값을 사용할 수 있다.
집계함수를 WHERE 구에서 사용하는 것은 불가능하다. 이유는, GROUP BY보다 WHERE 구가 먼저 실행되기 때문에, 그룹화를 하기 전 집계연산을 하는 것은 올바른 값을 리턴하지 못하기 때문이다.
따라서 이런 상황에는 HAVING 구를 사용해야 한다. HAVING 구에 집계함수를 사용하면 원하는 대로 집계함수를 사용해 조건식을 지정할 수 있다.
서브쿼리란 SELECT를 통해 값을 반환하는 것을 의미한다. 종류에는 크게 네 가지가 존재한다.
이때 첫 번째와 같은 경우를 스칼라 값을 반환한다고 한다. 이 경우는 특별한데, 그 이유는 서브쿼리로써 사용하기 편리하기 대문이다.
상관 서브쿼리란, 부모 명령과 자식인 서브 쿼리가 특정 관계를 맺는 것을 의미한다.
이 때, 서브쿼리는 부모 명령과 연관되어 처리되기 때문에 서브쿼리 부분만을 따로 떼어내어 실행시킬 수 없다.
이 상관 서브쿼리는 주로 EXIST 명령과 함께 사용된다. EXIST 명령을 사용하면, 해당 서브쿼리가 부모 쿼리에 존재하는지를 확인할 수 있다.
EXIST 외에도 IN 이라는 연산자가 있다. 이 연산자 또한 IN 뒤의 집합이 찾고자 하는 집합에 존재하는지를 리턴한다.