클로스 HAVING
GROUP BY
SQL에 사용되어 데이터 그룹에 대한 집계 작업을 각각 수행하고 이들 그룹을 각각 필터링합니다. 사용 방법은 다음과 같습니다.
GROUP BY
조항 :이 절은 지정된 열에서 동일한 값을 "count", "min", "max"와 같은 요약 행으로 그룹화하는 데 사용됩니다. 요약 통계를 생성하기 위해 집계 함수와 함께 사용됩니다. 예는 다음과 같습니다.
<code class="sql">SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department;</code>
이 쿼리에서, 그룹 GROUP BY
은 부서별 직원을 그룹화하고 COUNT(*)
함수는 각 그룹의 직원 수를 계산합니다.
HAVING
:이 절은 GROUP BY
별로 그룹이 생성 한 그룹을 필터링하는 데 사용됩니다. WHERE
절과 유사하지만 그룹화 된 데이터에서 작동합니다. 사용 방법은 다음과 같습니다.
<code class="sql">SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department HAVING COUNT(*) > 10;</code>
이 쿼리는 부서 별 직원을 그룹화 한 다음 직원이 10 명 이상없는 부서를 필터링합니다.
요약하면, GROUP BY
열 값에 기초하여 그룹을 형성하고, 집계 함수에 적용되는 조건에 따라 이들 그룹을 필터링 HAVING
사용됩니다.
SQL 쿼리에 HAVING
GROUP BY
의 주요 차이점은 다음과 같습니다.
기능 :
GROUP BY
그룹은 하나 이상의 열 값을 기반으로 세트로 줄을 올립니다. 이 그룹에 적용되는 방식으로 SUM
, COUNT
, AVG
등과 같은 집계 함수를 사용하려면 필요합니다.GROUP BY
별로 형성된 그룹을 필터링 HAVING
. 절 GROUP BY
의 결과에서 작동합니다.사용법 컨텍스트 :
GROUP BY
단독으로 또는 HAVING
과 함께 사용할 수 있습니다.HAVING
GROUP BY
함께 사용해야합니다.SQL 쿼리에 배치 :
GROUP BY
일반적으로 어디에 WHERE
이후에 나오고 ORDER BY
및 LIMIT
.ORDER BY
GROUP BY
따라 와서 HAVING
해야 LIMIT
.필터링 조건 :
WHERE
절은 그룹화하기 전에 행을 필터링하고 개별 행에서만 사용할 수 있습니다.HAVING
하고 집계 된 데이터에서 조건을 사용할 수 있습니다.이러한 차이를 이해하는 것은 행과 그룹 수준 모두에서 데이터를 조작하는 효과적인 SQL 쿼리를 작성하는 데 중요합니다.
예, GROUP BY
HAVING
SQL로 함께 사용할 수 있습니다. 이 조합은 데이터를 그룹화 한 다음 집계 조건에 따라 결과 그룹을 필터링하려는 경우 유용합니다. 함께 사용하는 방법은 다음과 같습니다.
<code class="sql">SELECT category, AVG(price) AS average_price FROM products GROUP BY category HAVING AVG(price) > 50;</code>
이 쿼리에서 :
GROUP BY category
은 해당 범주별로 제품을 그룹화합니다.AVG(price)
함수는 각 그룹 내 평균 가격을 계산합니다.HAVING AVG(price) > 50
조건은 그룹을 필터링하여 평균 가격이 50을 초과하는 범주 만 포함하도록 필터링합니다. GROUP BY
사용하고 함께 HAVING
때 다음을 기억하십시오.
GROUP BY
쿼리에 HAVING
전에 표시해야합니다.GROUP BY
생성 된 그룹을 필터링하므로 절 GROUP BY
HAVING
있는 경우에만 사용할 수 있습니다.이 조합은 데이터를 집계 한 다음 해당 집계 결과를 필터링 해야하는 복잡한 데이터 분석을 수행하는 데 강력합니다.
GROUP BY
하고 HAVING
을 사용하는 SQL 쿼리 최적화는 성능을 향상시키기위한 몇 가지 전략이 필요합니다.
색인 사용 : GROUP BY
에 사용 된 열과 HAVING
이 색인되어 있는지 확인하십시오. 이 열을 색인화하면 그룹화 및 필터링 작업 속도를 크게 높일 수 있습니다.
<code class="sql">CREATE INDEX idx_department ON employees(department);</code>
데이터를 조기에 제한하십시오 : 클로시 WHERE
사용하여 GROUP BY
앞에 데이터를 필터링하고 작업을 HAVING
. 이렇게하면 그룹화 및 필터링 해야하는 데이터의 양이 줄어 듭니다.
<code class="sql">SELECT department, COUNT(*) AS employee_count FROM employees WHERE hire_date > '2020-01-01' GROUP BY department HAVING COUNT(*) > 10;</code>
그룹에 기능을 사용하지 마십시오 GROUP BY
GROUP BY UPPER(department)
대신 다른 곳에서 데이터를 필터링하고 대문자를 사용할 수있는 경우 GROUP BY department
사용하십시오.
HAVING
조항을 최적화하십시오 . 단순화되거나 WHERE
절으로 이동할 수있는 경우 복잡한 계산을 피 HAVING
.GROUP BY
에 사용 된 열의 데이터 유형이 수행 HAVING
수행중인 작업에 최적인지 확인하십시오. 예를 들어, 작업을 계산하는 데 INT
사용하는 것이 VARCHAR
사용하는 것보다 효율적입니다.하위 쿼리 또는 공통 테이블 표현식 (CTES) 사용을 고려하십시오 . 복잡한 쿼리에서 쿼리를 더 작고 관리하기 쉬운 부품으로 나누면 최적화에 도움이 될 수 있습니다.
<code class="sql">WITH dept_counts AS ( SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department ) SELECT department, employee_count FROM dept_counts WHERE employee_count > 10;</code>
이러한 최적화 기술을 적용하면 HAVING
가 포함 된 GROUP BY
과 관련된 SQL 쿼리의 성능을 향상시킬 수 있습니다.
위 내용은 SQL에서 조항을 사용하여 그룹을 사용하려면 어떻게해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!