프로젝트(종료)/SQLD 자격증 따기
[SQL]작성 및 실행 순서를 이해하면 좋은 점
일말고프로젝트
2021. 5. 28. 10:22
SQL의 작성 순서
1. SELCET
2. FROM
3. WHERE
4. GROUP BY
5. HAVING
6. ORDER BY
7. LIMIT
SQL의 실행 순서
1. FROM : 어떤 테이블을?
2. WHERE : 어떤 ROW를?
3. GROUP BY : 어떤 그룹으로?
4. HAVING : 어떤 조건의 그룹을?
5. SELECT : 어떤 컬럼들을?
6. ORDER BY : 어떻게 정렬을?
7. LIMIT : 최종 출력할 ROW중 어떤 ROW를?
이 순서를 이해하면 ALIAS를 쓸 수 있는 절과 아닌 절을 구별할 수 있다. 대표적으로 GROUP BY는 SELECT보다 먼저 실행 되기 때문에 ALIAS를 쓸 수 없지만 ORDER BY의 경우 SELECT 이후에 실행 되기 때문에 써도 된다.
서브쿼리의 활용도도 이해할 수 있다. 컬럼과 컬럼을 활용해 새로운 컬럼을 만드는 경우(EX) 매출과 고객수를 활용해 객단가 컬럼 생성) 해당 컬럼을 다른 SELECT에서 바로 쓰고 싶어도 바로 쓸 수 없다. 아래처럼 CUS_PER_BUY를 바로 활용하려 하면 에러가 뜬다.
SELECT
BUY_TOTAL
,CUSTOM_NUM_TOTAL
,BUY_TOTAL/CUSTOM_NUM_TOTAL AS CUS_PER_BUY
,CASE
WHEN CUS_PER_BUY < 10000 THEN '우량 고객'
ELSE '그냥 고객'
END
FROM PD_DE
;
이렇게 고치면 쓸 수 있고, 더 깔끔하게 볼 수 있다. 만약 컬럼간의 연산한 생성된 컬럼이 많거나 CASE WHEN의 경우의 수가 더 많을수록 효과가 더 크다.
SELECT
BUY_TOTAL
,CUSTOM_NUM_TOTAL
,CUS_PER_BUY
,CASE
WHEN CUS_PER_BUY < 10000 THEN '우량 고객'
ELSE '그냥 고객'
END
FROM (SELECT *, BUY_TOTAL/CUSTOM_NUM_TOTAL AS CUS_PER_BUY FROM PD_DE;)
;