>데이터 베이스 >MySQL 튜토리얼 >SQL의 GROUP BY 절은 집계 함수 유무에 관계없이 어떻게 작동합니까?

SQL의 GROUP BY 절은 집계 함수 유무에 관계없이 어떻게 작동합니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-13 07:10:45650검색

How Does SQL's GROUP BY Clause Work with and Without Aggregate Functions?

SQL의 GROUP BY 절: 심층 분석

SQL GROUP BY 절은 지정된 열을 기준으로 행을 그룹화하는 강력한 도구로, 그룹화된 데이터에 대한 집계 계산(예: SUM, COUNT, AVG)을 가능하게 합니다. 집계 함수가 있을 때와 없을 때의 동작을 살펴보겠습니다.

GROUP BY 집계 함수가 없는 경우: 함정

집계 함수 없이 GROUP BY을 사용하면 오류가 발생합니다. 다음 예를 고려해보세요:

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no</code>

이 작업은 실패합니다. GROUP BY에서는 SELECT 목록의 집계되지 않은 모든 열이 GROUP BY 절에도 포함되어야 하기 때문입니다. * 와일드카드는 모든 열을 선택하므로 데이터베이스가 각 order_no 그룹

내의 그룹화되지 않은 열에 대해 어떤 값을 반환할지 결정할 수 없기 때문에 쿼리가 모호해집니다.

GROUP BY 집계 함수를 사용한 솔루션

집계 함수를 사용하면 문제가 해결되었습니다. 집계 함수는 전체 그룹에서 작동하므로 쿼리가 의미 있는 결과를 생성할 수 있습니다. 예를 들어 각 주문의 총 가격을 계산하면 다음과 같습니다.

<code class="language-sql">SELECT SUM(order_price)
FROM order_details
GROUP BY order_no</code>

이 쿼리는 각 고유 order_price에 대한 order_no의 합계를 성공적으로 반환합니다.

집계 함수 및 그룹화된 데이터: 숨겨진 속성 공개

집계 함수는 각 그룹 내의 속성에 액세스하는 방법을 제공합니다. 이전 예에서 SUM 함수는 각 order_no 그룹의 합계를 계산합니다. 이는 그룹으로 "드릴다운"하고 요약된 정보를 검색하는 집계 함수의 능력을 보여줍니다.

표준 SQL 준수: GROUP BY 규칙

표준 SQL(MySQL의 보다 관대한 접근 방식과 달리)에서는 SELECT 목록의 집계되지 않은 모든 열이 GROUP BY 절에 나타나야 합니다. 따라서 다음 쿼리가 유효합니다.

<code class="language-sql">SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no</code>

order_no 절에 집계되지 않은 열인 GROUP BY이 있으므로 이는 유효합니다. 여러 그룹화된 열과 집계 함수가 포함된 쿼리에도 동일한 원칙이 적용됩니다.

<code class="language-sql">SELECT order_no, order_price, MAX(order_item)
FROM order_details
GROUP BY order_no, order_price</code>

이 쿼리는 order_no 절에 order_priceGROUP BY가 모두 포함되어 있으므로 유효합니다.

위 내용은 SQL의 GROUP BY 절은 집계 함수 유무에 관계없이 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.