[SQL] GROUP BY없이 HAVING
SQLGROUP BY없이 HAVING
고르다 * 책 NumberOfPages를 갖는 = MAX (NumberOfPages)
다음은 표준 기록한다 :
출처
누군가가 나를 설명 할 수, 왜 표준에 따라 가능해야한다?
MySQL은, 그것은 완벽하게 작동합니다.
해결법
-
==============================
1.Mimer 검사기 결과에도 불구하고, 나는 당신이 유효한 표준 SQL이라고 생각하지 않습니다.
Mimer 검사기 결과에도 불구하고, 나는 당신이 유효한 표준 SQL이라고 생각하지 않습니다.
GROUP BY 절없는 HAVING 절은 유효하고 표준 SQL에서 (틀림없이) 유용한 구문입니다. 는 테이블 식에 작동하기 때문에 한꺼번에 세트로, 말하자면, 그것은 단지 정말 집계 함수를 사용하는 의미가 있습니다. 당신의 예에서 :
Book HAVING NumberOfPages = MAX(NumberOfPages)
유효하지 않기 때문에 NumberOfPages가 참조 않는 행 전체 테이블을 고려할 때? 마찬가지로, 그것은 단지 SELECT 절에서 리터럴 값을 사용하는 의미가 있습니다.
유효한 표준 SQL이다이 예를 생각해 보자 :
SELECT 'T' AS result FROM Book HAVING MIN(NumberOfPages) < MAX(NumberOfPages);
DISTINCT 키워드의 부재에도 불구하고, 쿼리는 더 한 행보다 반환하지 않습니다. HAVING 절은, 결과는 값 'T'를 포함하는 단일 열이있는 단일 행이 될 것입니다 만족하는 경우 빈 세트는 단일과 제로 행 즉, 그렇지 않으면 결과가 될 것입니다, (우리는 페이지의 번호를 다른 책을 나타냄) 기둥.
내가 쿼리는 MySQL의 오류 때문에 (논리적으로) SELECT 절 이후에 존재하게에 HAVING 절을 일으킬 propritary 확장을하지 않는 이유를 생각 암시 그룹 BY와 결합, (표준 행동은 주위에 다른 방법입니다) 절은 다른 답변에서 언급했다.
-
==============================
2.표준에서 (굵게 강조에서 추가)
표준에서 (굵게 강조에서 추가)
1) HC는 HAVING 절하자. TE 즉시 HC가 들어있는 테이블 식하자. TE는 즉시 조항에 의해 그룹을 포함하지 않는 경우, "GROUP BY ()는"암시 적이다. T가를하자 GBC에 의해 정의 된 테이블의 설명은 TE에 포함 된 R은하자 즉시 GBC의 결과.
절 의해 암시 그룹, 외부 참조가 TE 열에 접근 할 수있다.
그러나, 이러한 표준에 대한 인증은 자체 인증은 매우 요즘, 그리고 예를 들어 당신이 주요 RDBMS 공급 업체의 모든 걸쳐 것없는 일을했다.
-
==============================
3."GROUP BY를 사용하지 않는 경우, HAVING 동작합니다은 WHERE 절을 좋아한다." 여기서 갖는 차이 : 필터 ROWS 필터 그룹을 갖는 반면
"GROUP BY를 사용하지 않는 경우, HAVING 동작합니다은 WHERE 절을 좋아한다." 여기서 갖는 차이 : 필터 ROWS 필터 그룹을 갖는 반면
SELECT SUM(spending) as totSpending FROM militaryspending HAVING SUM(spending) > 200000;
결과
totSpending 1699154.3
더 많은 세부 사항, 문의하시기 바랍니다 https://dba.stackexchange.com/questions/57445/use-of-having-without-group-by-in-sql-queries/57453
-
==============================
4.예를 우리는별로 그룹화하지 않고 SQL 쿼리를 작성하지만, 집계 함수를 작성할 수 있습니다 우리 쿼리한다.
예를 우리는별로 그룹화하지 않고 SQL 쿼리를 작성하지만, 집계 함수를 작성할 수 있습니다 우리 쿼리한다.
select sum(Salary) from ibs having max(Salary)>1000
from https://stackoverflow.com/questions/6924896/having-without-group-by by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의 테이블 이름에 특수 문자 (0) | 2020.04.27 |
---|---|
[SQL] MySQL은 / MariaDB - 내부 하위 쿼리에 의해 순서 (0) | 2020.04.27 |
[SQL] SQL Server 관리 Studio에서 SELECT ... INTO OUTFILE에 해당이 있습니까? (0) | 2020.04.27 |
[SQL] 예상하고 오라클에서 작은 따옴표 '를 탈출하는 방법 (0) | 2020.04.27 |
[SQL] 시간대 저장 데이터 유형에서 "시간대와 타임 스탬프" (0) | 2020.04.27 |