> 데이터 베이스 > MySQL 튜토리얼 > 내 Oracle GROUP BY 쿼리가 'GROUP BY 표현식이 아님' 오류를 반환하는 이유는 무엇입니까?

내 Oracle GROUP BY 쿼리가 'GROUP BY 표현식이 아님' 오류를 반환하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-05 17:59:43
원래의
788명이 탐색했습니다.

Why Does My Oracle GROUP BY Query Return a

집계 함수가 없는 GROUP BY

집계 함수 없이 GROUP BY를 사용할 경우 Oracle이 다음 문제를 피하기 위해 작동하는 방식을 이해하는 것이 중요합니다. "GROUP BY 표현식이 아닙니다" 오류.

GROUP BY는 지정된 열에 대해 동일한 값을 가진 행을 그룹화하고 단일 결과 행을 생성합니다. 그러나 집계 함수에 표시되지 않는 열은 그룹화 값의 고유한 조합을 식별하기 위해 GROUP BY 절에 포함되어야 합니다.

다음 표를 고려하세요.

EMP
+-------+------+------+
| EmpNo | EName | Sal  |
+-------+------+------+
| 7839   | King  | 5000  |
| 7698   | Blake | 2850  |
| 7782   | Clark | 2450  |
+-------+------+------+
로그인 후 복사

예시 1:

SELECT EName, Sal
FROM EMP
GROUP BY EName, Sal
로그인 후 복사

결과:

+------+------+
| EName | Sal  |
+------+------+
| King  | 5000  |
| Blake | 2850  |
| Clark | 2450  |
+------+------+
로그인 후 복사

이 쿼리는 행을 올바르게 그룹화하고 그룹화 열(EName 및 Sal) 이후의 모든 행을 반환합니다. ) 일치합니다.

예 2:

SELECT EName, Sal
FROM EMP
GROUP BY EName
로그인 후 복사

결과:

ORA-00979: not a GROUP BY expression
로그인 후 복사
로그인 후 복사
로그인 후 복사

Sal이 GROUP BY 절에 포함되지 않았기 때문에 이 쿼리는 실패합니다. Oracle은 동일한 EName에 대해 서로 다른 Sal 값을 사용하여 여러 행을 집계하는 방법을 모릅니다.

예 3:

SELECT EName, Sal
FROM EMP
GROUP BY Sal
로그인 후 복사

결과:

ORA-00979: not a GROUP BY expression
로그인 후 복사
로그인 후 복사
로그인 후 복사

EName이 GROUP에 포함되어 있지 않기 때문에 이 쿼리도 실패합니다. BY 절. Oracle은 각 고유 Sal 값과 연결할 EName을 알아야 합니다.

예 4:

SELECT EmpNo, EName, Sal
FROM EMP
GROUP BY Sal, EName
로그인 후 복사

결과:

ORA-00979: not a GROUP BY expression
로그인 후 복사
로그인 후 복사
로그인 후 복사

선택 열(EmpNo, EName, Sal)의 수가 다음 수를 초과하여 이 쿼리가 실패합니다. GROUP BY 절의 열(Sal, EName). Oracle에서는 고유한 조합을 고려하여 선택한 열이 그룹화의 일부가 되도록 요구합니다.

예 5:

SELECT EmpNo, EName, Sal
FROM EMP
GROUP BY EmpNo, EName, Sal
로그인 후 복사

결과:

+-------+------+------+
| EmpNo | EName | Sal  |
+-------+------+------+
| 7839   | King  | 5000  |
| 7698   | Blake | 2850  |
| 7782   | Clark | 2450  |
+-------+------+------+
로그인 후 복사

선택한 모든 열이 GROUP BY에 포함되어 있으므로 이 쿼리는 성공합니다. 조항. Oracle은 EmpNo, EName 및 Sal의 각각의 고유한 조합을 고려하여 세 개의 개별 행을 생성합니다.

위 내용은 내 Oracle GROUP BY 쿼리가 'GROUP BY 표현식이 아님' 오류를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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