SQL 에서 where 자구 에 집합 함수 가 나타 나 지 않 는 이유

1298 단어 SQL
우선 우 리 는 어떤 집합 함 수 를 익 혀 야 합 니까?
예 를 들 어 SUM (), MIN (), Max () 와 같은 것 을 우 리 는 집합 함수 라 고 부른다.
그러면 우 리 는 where 자구 에서 이 함수 들 을 사용 할 수 없습니다. 왜 일 까요?
집합 함수 도 열 함수 라 고 하 는데 모두 전체 열 데 이 터 를 바탕 으로 계산 한 것 이 고 where 자 구 는 데이터 줄 을 여과 한 것 이다. 선별 과정 에서 '이미 선별 한 데 이 터 를 바탕 으로 하 는 계산 결과' 에 의존 하 는 것 은 역설 이 고 이것 은 통 하지 않 는 다.더 쉽게 말 하면 집합 함 수 는 전체 열 데 이 터 를 계산 해 야 하기 때문에 이 를 사용 하 는 전 제 는 결과 집합 이 이미 확정 되 었 다 는 것 이다!
한편, where 자 구 는 '확정' 결과 집합 과정 에 있 기 때문에 집합 함 수 를 사용 할 수 없다.
where 자구 에 집합 함수 가 나타 나 지 않 는 것 과 반대로 우 리 는 집합 함 수 를 사용 하지 않 는 having 자 구 를 거의 볼 수 없다.왜?수평 방향 에서 외부 에서 지정 한 조건 에 따라 선별 (즉 줄 에 대한 선별) 할 수 있 기 때문에 where 자 구 는 독립 적 으로 완성 할 수 있 고 나머지 는 결과 집합 자체 의 통계 데이터 에 따라 더욱 선별 해 야 한다. 이때 거의 having 자 구 를 결합 하여 집합 함 수 를 완성 해 야 한다.
아래 에 따 르 면 이것 은 잘못된 것 입 니 다. 오 류 를 보고 할 것 입 니 다: Group function is not allowed here
select department_id,avg(salary)  
from employees  
where  avg(salary)>6000  
group by department_id  
--having  avg(salary)>6000 

원인
sql 문장의 실행 순 서 는?
 자구
where 자구
그룹 별 자구
자구
order by 자구
선택 자구
우선 취 합 함수 가 결과 집합 에 대한 연산 임 을 알 아야 합 니 다. where 자구 에서 취 합 함 수 를 사용 할 때 group by 분할 결과 집합 자구 에 따라 실행 되 지 않 았 습 니 다. 이 때 는 from 후의 결과 집합 만 있 습 니 다.
그래서 where 자구 에서 집합 함 수 를 사용 할 수 없습니다.

좋은 웹페이지 즐겨찾기