> 데이터 베이스 > MySQL 튜토리얼 > SQL의 GROUP BY 절은 집계 함수 없이 어떻게 작동하나요?

SQL의 GROUP BY 절은 집계 함수 없이 어떻게 작동하나요?

DDD
풀어 주다: 2024-12-25 22:29:09
원래의
996명이 탐색했습니다.

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

집계 함수 없이 GROUP BY 이해

SQL에서 GROUP BY 문은 지정된 열을 기준으로 테이블의 행을 그룹화하는 데 사용됩니다. 집계 함수 없이 GROUP BY를 사용하는 경우 작동 방식과 필요한 조건을 이해하는 것이 중요합니다.

다음 예를 고려하세요.

SELECT ename, sal
FROM emp
GROUP BY ename, sal;
로그인 후 복사

이 쿼리는 행을 반환하지 않습니다. 집계 함수가 없는 GROUP BY 규칙을 위반합니다.

  • 열 수 SELECT 목록: SELECT 목록의 열 수는 GROUP BY 절의 열 수와 동일해야 합니다.

이 경우 SELECT 목록에는 두 개의 열(ename, sal)이 있습니다. 이지만 GROUP BY 절에는 3개(ename, sal, sal)가 있습니다. 이 문제를 해결하려면 GROUP BY 절에서 sal 열 하나를 제거하세요.

SELECT ename, sal
FROM emp
GROUP BY ename;
로그인 후 복사
  • SELECT 목록의 GROUP BY가 아닌 열: GROUP BY가 아닌 열만 포함될 수 있습니다. 상수이거나 집계할 인수로 나타나는 경우 SELECT 목록에

sal을 SELECT 목록에 포함시키면 GROUP BY 절에 없기 때문에 GROUP BY가 아닌 열이 됩니다. 집계 함수가 아니기 때문에 ORA-00979 오류가 발생합니다.

이를 수정하려면 GROUP BY 절에 sal을 추가하거나 그 위에 집계 함수를 사용해야 합니다.

-- Add sal to the GROUP BY clause
SELECT ename, MIN(sal), MAX(sal)
FROM emp
GROUP BY ename, sal;

-- Use an aggregate function on sal
SELECT ename, SUM(sal)
FROM emp
GROUP BY ename;
로그인 후 복사

규칙 이면의 추론

GROUP BY 연산 GROUP BY 열에서 동일한 값이 있는 행을 병합하여 각각의 고유한 값 집합에 대해 단일 행을 생성합니다. 집계 함수 없이 SELECT 목록에 GROUP BY가 아닌 열을 포함하면 각 그룹의 대표 값을 선택하는 방법이 불분명하기 때문에 모호해집니다.

예를 들어 Name 및 Age 열이 있는 테이블이 있고 GROUP을 수행하는 경우 이름별, 각 이름에 대한 결과에 어떤 나이가 표시되어야 합니까? MIN, MAX 또는 SUM과 같은 집계 함수를 사용하여 해당 열을 처리하는 방법을 명시적으로 지정합니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿