본문 바로가기
프로젝트(종료)/SQLD 자격증 따기

[SQL]작성 및 실행 순서를 이해하면 좋은 점

by 일말고프로젝트 2021. 5. 28.

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;)
;
    

댓글