광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ
반응형

말 그대로다. select문에도 순서가 있다. 이거 그리고 SQLD에 나온다.


select * from (table1) where (condition1) group by (column1) having (condition2) order by (column1);

여기 select문이 하나 있다. 엥 근데 무슨 순서를 말씀하시는건가요? 이 구문을 쳤을 때 SQL이 저 구문을 어디서부터 실행하느냐다. 일단 순서는 from-where-group by-having-select-order by이다. 어디서-뭘 1-묶어-뭘 2-갖고와-정렬해 순서. 이게 근데 왜 중요한가요?

 

여러분 알고 계셨습니까? 집계함수는 where에서 쓸 수 없다. 왜죠? 아직 안 묶었잖아요. 그리고 애초에 where에서는 행단위로 필터링하기때문에 집계함수를 쓸 수 없다.

 

그럼 where이랑 having이랑 뭔 차이예요? where은 그룹바이로 묶기 전에 필터링한다. 직원 테이블에서 특정 부서만 보고 싶으면 where로 특정 부서만 먼저 필터링하고, 특정 과목의 성적으로 특정 학번(혹은 특정 전공)만 묶고 싶을 때 where에서 사전 필터링을 한다. 그럼 having은요? 걔는 그룹바이로 묶고 나서 필터링한다. 특정 과목의 성적을 특정 학번이나 특정 전공으로 묶고 나서 성적이 몇점 이상인 사람을 볼 때 having을 쓴다. 이 순서를 간과하고 조건 이상하게 걸면 결과가 내가 원하는대로 안 나오는 초유의 참사가 터질 수 있으니 주의하십시오.

 

아, 그리고 오더바이는 쓰는것도 실행도 다 맨 끝이다.

반응형

'Coding > 코딩잡담' 카테고리의 다른 글

CONNECT BY와 계층형 질의  (0) 2025.11.14
스키마  (0) 2025.11.14
식별자  (0) 2025.11.13
롤업, 큐브, 그리고 그루핑 셋  (0) 2025.11.13
NULL이란 무엇인가  (0) 2025.11.12