>데이터 베이스 >MySQL 튜토리얼 >SQL 쿼리에서 ORA-00979 'GROUP BY 표현식이 아님' 오류를 해결하는 방법은 무엇입니까?

SQL 쿼리에서 ORA-00979 'GROUP BY 표현식이 아님' 오류를 해결하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-24 04:41:08452검색

How to Resolve the ORA-00979

ORA-00979: GROUP BY 표현식이 아닙니다

ORA-00979 오류는 SQL 쿼리의 SELECT 목록과 GROUP BY 절이 일치하지 않음을 나타냅니다. 이는 일반적으로 SELECT 문에 GROUP BY 절에 없는 열이 포함되어 있고 해당 열이 SUM, AVG, MIN, MAX, COUNT 등의 함수를 사용하여 집계되지 않을 때 발생합니다. 등등

시나리오:

쿼리에는 여러 테이블(예: review, cs, fact)이 포함될 가능성이 높으며 GROUP BY 절이 SELECT 목록의 집계되지 않은 모든 열을 포함하지 않습니다. 예:

<code class="language-sql">SELECT cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number,  cf.some_other_column  -- Problem: cf.some_other_column is missing from GROUP BY
FROM review cr
JOIN cs ON ...
JOIN fact cf ON ...
GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number;</code>

해결책:

이 문제를 해결하려면 다음 중 하나를 수행하세요.

  1. GROUP BY 절에 누락된 열을 추가합니다. SELECT 절에 집계되지 않은 GROUP BY 목록의 모든 열을 포함합니다.

  2. 누락된 열 집계: 집계 함수(예: SUM(cf.some_other_column))를 사용하여 열 값을 요약합니다.

추가 고려 사항:

  • 비균등 조인: 모든 SELECT 열이 GROUP BY에 있더라도 비균등 조인(예: t1.id > t2.id)으로 인해 오류가 발생할 수 있습니다. 이는 GROUP BY 원칙을 위반하여 중복 행을 생성합니다. 조인 조건을 수정하거나 하위 쿼리를 사용하여 중복을 제거하세요.

  • GROUP BY 이해: GROUP BY 절은 지정된 열에서 동일한 값을 가진 행을 그룹화하여 집계 함수가 각 그룹에서 작동할 수 있도록 합니다. 적절한 그룹화가 없으면 데이터베이스는 집계되지 않은 열에 대한 단일 값을 결정할 수 없습니다.

SELECT 목록의 모든 열이 GROUP BY 절에 있거나 집계되었는지 확인하면 ORA-00979 오류를 해결하고 일관된 쿼리 결과를 얻을 수 있습니다.

위 내용은 SQL 쿼리에서 ORA-00979 'GROUP BY 표현식이 아님' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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