반응형
말 그대로다. 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 |