SELECT 순서는 크게 다음과 같이 이루어진다.

  1. FROM and JOIN
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT (window functions execute here)
  6. ORDER BY
  7. LIMIT

FROM(+ JOIN)

흐름에 맞춰 생각해보자

먼저 우리가 데이터로 무언가 작업을 하려면 데이터가 있어야 한다.

요리를 하려는데 재료없이 재료 손질을 하고 있는 것이다. (데이터가 없는데 무엇을 할 수 있는가..)

우선적으로 데이터를 가져오는 작업을 FROM (+ JOIN)을 첫 번째 순서로 조회할 테이블을 지정 이후 JOIN을 통해 추가적으로 연결할 테이블을 지정해서 같이 가져온다.

WHERE

WHERE 절에서는 우리가 원하는 조건에 맞는 데이터를 추출한다고 보면 된다.

GROUP BY절 보다 먼저 진행하는 이유는 GROUP BY절을 진행하면 어떠한 컬럼에서 중복된 값을 가지는 행들은 하나의 행으로 변경되기 때문이다.

GROUP BY

WHERE절에서 추출되고 남은 데이터를 그룹(정확히는 내가 지정한 컬럼에서 같은 값을 가지는 행들의 그룹)별로 묶어주는 것이다.

HAVING

그룹별로 묶고난 데이터에 대해 HAVING으로 한번 더 필터링이 가능