https://sqlbolt.com/lesson/select_queries_order_of_execution
쿼리를 작성하다보면 한번쯤 헷갈릴수 있는 코드 실행 순서.
가장 윗줄부터 처리한다는 코드의 기본 공식이 적용은 되나
셀렉트와 오더바이는 후반부에 처리가 된다.
FROM, JOIN > WHERE, GROUP BY, HAVING > SELECT > ORDER BY
FROM과 JOIN
JOIN이 먼저 실행되어 데이터가 SET으로 모아지게 됌.
여기에는 서브쿼리도 함께 포함되어 임시적인 테이블을 만들 수 있게 도와줌.
WHERE
데이터셋을 형성하게 되면 WHERE의 조건이 개별 행에 적용이 된다. 이 WHERE절의 제약 조건은 FROM절로 가져온 테이블에 적용이 될 수 있다.
GROUP BY
WHERE의 조건 적용 후 나머지 행은 GROUP BY절에 지정된 열의 공통 값을 기준으로 그룹화된다. 쿼리에 집계 기능이 있는 경우에만 이 기능을 사용해야 한다.
HAVING
GROUP BY 절이 쿼리에 있을 경우 HAVING 절의 제약조건이 그룹화된 행에 적용됌.
SELECT
SELECT에 표현된 식이 마지막으로 적용됌.
DISTINCT
표현된 행에서 중복된 행은 삭제됌
ORDER BY
지정된 데이터를 기준으로 오름차순, 내림차순을 지정
LIMIT / OFFSET
LIMIT와 OFFSET에서 벗어나는 행들이 제외되어서 출력됌.
모든 쿼리가 위에 나열된 모든 부분을 포함할 필요는 없지만 SQL이 유연한 이유 중 하나는 개발자와 데이터 분석가가 추가 코드를 작성할 필요 없이 위의 문법만 사용해도 데이터를 신속하게 출력할 수 있기 때문.