집 >데이터 베이스 >MySQL 튜토리얼 >SQL의 GROUP BY 절은 집계 함수 유무에 관계없이 어떻게 작동합니까?
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_price
과 GROUP BY
가 모두 포함되어 있으므로 유효합니다.
위 내용은 SQL의 GROUP BY 절은 집계 함수 유무에 관계없이 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!