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 자구 에서 집합 함 수 를 사용 할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.