SQL Server의 Group By, Having 및 Where 절 실행 시퀀스
SQL 쿼리의 실행 시퀀스와 혼동되어 있을 뿐입니다.GROUP BY
그리고.HAVING
와 함께WHERE
절을 클릭합니다.어느 쪽이 먼저 처형됩니까?순서가 어떻게 되죠?
순서:
FROM 및 JOIN에 의해 행이 결정 및 필터링
행에 더 많은 필터가 있는 위치
GROUP BY는 이러한 행을 그룹으로 결합합니다.
필터 그룹 보유
ORDER BY 나머지 행/그룹 정렬
나머지 행/그룹의 LIMIT 필터
다음은 sql server의 전체 시퀀스입니다.
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE or WITH ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
11. TOP
따라서 위의 목록에서 다음 실행 시퀀스를 쉽게 이해할 수 있습니다.
1. WHERE
2. GROUP BY
3. HAVING
자세한 내용은 Microsoft에서 확인하시기 바랍니다.
WHERE는 처음에 쿼리 결과를 그룹화하고 그룹화된 결과를 필터링하기 위해 마지막 HAVING-Clause가 사용됩니다.이는 "논리적인" 순서이며, 기술적으로 엔진에 어떻게 구현되는지 알 수 없습니다.
이것은 쿼리의 SQL 실행 순서입니다.
실행순서는 이 기사의 예시와 함께 확인할 수 있습니다.
아래의 질문은 도움이 될 수 있으며 이 기사에서 직접 인용할 수 있습니다.
- GROUP BY --> WHERE 제약조건 적용 후의 나머지 행은 GROUP BY 절에서 지정된 컬럼의 공통값을 기준으로 그룹화 됩니다.그룹화의 결과로 해당 열에 고유한 값이 있는 행의 수만큼만 표시됩니다.이는 쿼리에 집약함수가 있는 경우에만 이 기능을 사용해야 함을 의미합니다.
- HAVING --> 쿼리에 GROUP BY 절이 있는 경우 HAVING 절의 제약이 그룹화된 행에 적용되며 해당 제약 조건을 충족하지 않는 그룹화된 행은 폐기됩니다.WHERE 절과 마찬가지로 대부분의 데이터베이스에서는 이 단계에서 별칭에 액세스할 수 없습니다.
참고 자료:-
마티아스가 말한 것처럼 엔진에 구현된 것 같습니다: WHERE, GROUP BY, HADING
전체 시퀀스를 나열하는 참조를 온라인으로 찾으려고 했지만(즉, "SELECT"가 바로 하단에 표시됨) 찾을 수 없습니다.자세한 내용은 얼마 전에 읽은Solid Quality Learning의 "Inside Microsoft SQL Server 2005" 책에 기재되어 있습니다.
편집: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx 링크를 찾았습니다.
아래 순서
- 시작과 참여
- 어디에
- 그룹화 기준
- 하고 있다
- 선택한다.
- 주문자
- 제한.
Oracle 12c에서는 다음 중 하나의 순서로 코드를 실행할 수 있습니다.
Where
Group By
Having
또는
Where
Having
Group by
실장하고 싶은 경우는, 무엇을 실시할 필요가 있는지를 생각해 주세요.
- Where: JOIN 작업을 실행해야 합니다.
- GROUP BY: 가입 시 결과를 "그룹화"할 그룹화 기준을 지정하면 가입 작업 후 WHERE 사용 후 결과를 그룹화해야 합니다.
- HAVING: HADING은 GROUP BY 식에서 말하는 필터링을 위한 것입니다.그런 다음 GROUP BY 뒤에 실행됩니다.
순서는 WHERE, GROUP BY, HIVE입니다.
절을 갖는 것은 절별 그룹보다 앞/앞에 있을 수 있다.
예: * FROM test_std; ROL_NO SNAME DOB TEACH를 선택합니다.
1 John 27-AUG-18 Wills
2 Knit 27-AUG-18 Prestion
3 Perl 27-AUG-18 Wills
4 Ohrm 27-AUG-18 Woods
5 Smith 27-AUG-18 Charmy
6 Jony 27-AUG-18 Wills
Warner 20-NOV-18 Wills
Marsh 12-NOV-18 Langer
FINCH 18-OCT-18 Langer
9개의 행이 선택되었습니다.
test_std에서 teach, count() count by TEACH의 1그룹을 선택합니다.
교원수
Langer 2 Wills 4
- 선택한다.
- 부터
- 결합(내부, 왼쪽, 오른쪽, 전체 외부 결합)
- 어디에
- 그룹화 기준
- 하고 있다
- 주문자
- 제한
GROUP By group
★★★★★★★★★★★★★★★★
언급URL : https://stackoverflow.com/questions/1130062/execution-sequence-of-group-by-having-and-where-clause-in-sql-server
'source' 카테고리의 다른 글
어레이 요소를 ParamArray를 통해 함수에 전달하면 varpointer가 함수에 도달하는 이유는 무엇입니까? (0) | 2023.04.14 |
---|---|
"비원자"라는 성질이 무슨 뜻이죠? (0) | 2023.04.14 |
Swift의 'open' 키워드는 무엇입니까? (0) | 2023.04.14 |
선택 목록 열이 집계 함수 또는 GROUP BY 절에 포함되어 있지 않으므로 선택 목록에서 유효하지 않습니다. (0) | 2023.04.14 |
#pragma 마크의 의미는 무엇입니까?#pragma 마크가 필요한 이유는 무엇입니까? (0) | 2023.04.14 |