> 데이터 베이스 > MySQL 튜토리얼 > SQL에서 GROUP BY 및 ORDER BY 절 충돌로 인해 발생하는 ORA-00979 오류를 해결하는 방법은 무엇입니까?

SQL에서 GROUP BY 및 ORDER BY 절 충돌로 인해 발생하는 ORA-00979 오류를 해결하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-24 04:37:07
원래의
572명이 탐색했습니다.

How to Resolve ORA-00979 Errors Caused by GROUP BY and ORDER BY Clause Conflicts in SQL?

ORA-00979 문제 해결: GROUP BYORDER BY 절 충돌

SQL의 ORA-00979 오류는 GROUP BYORDER BY 절이 일치하지 않아 발생합니다. GROUP BY는 데이터를 집계하고 ORDER BY는 데이터를 정렬합니다. ORDER BYGROUP BY에 없는 열이 포함된 경우 오류가 발생합니다.

문제 이해

ORA-00979 오류를 생성하는 다음 예제 쿼리를 고려하십시오.

<code class="language-sql">SELECT cr.review_sk, cr.cs_sk, cr.full_name,
       LISTAGG(TO_CHAR(cf.fact_date, 'mm/dd/yyyy'), ',') WITHIN GROUP (ORDER BY cf.fact_date) AS "appt",
       cs.cs_id, cr.tracking_number
FROM review cr JOIN cs ON cr.cs_sk = cs.cs_sk
JOIN fact cf ON cr.review_sk = cf.review_wk
WHERE UPPER(cs.cs_id) LIKE '%' || UPPER(i_cs_id) || '%'
  AND row_delete_date_time IS NULL
  AND cr.fact_type_code = 183050
GROUP BY cr.review_sk, cr.cs_sk, cr.tracking_number
ORDER BY cs.cs_id, cr.full_name;</code>
로그인 후 복사

ORDER BY cs.cs_id, cr.full_name에서 발생한 오류입니다. cs.cs_idcr.full_nameGROUP BY 절에 없습니다.

솔루션

ORA-00979를 해결하려면 ORDER BY의 모든 열이 GROUP BY에 있거나 집계되어야 합니다.

해결책 1: GROUP BY

에 추가

그룹화에 열이 꼭 필요한 경우 GROUP BY 절에 포함하세요.

<code class="language-sql">GROUP BY cr.review_sk, cr.cs_sk, cr.tracking_number, cs.cs_id, cr.full_name
ORDER BY cs.cs_id, cr.full_name;</code>
로그인 후 복사

해결책 2: 집계 함수 사용

그룹화에 열이 중요하지 않은 경우 MIN, MAX 등 데이터에 적합한 집계 함수를 사용하세요.

<code class="language-sql">GROUP BY cr.review_sk, cr.cs_sk, cr.tracking_number
ORDER BY MIN(cs.cs_id), MIN(cr.full_name);</code>
로그인 후 복사

올바른 솔루션 선택은 쿼리 논리와 원하는 결과에 따라 달라집니다. GROUP BY에 추가하면 더 자세한 내용이 유지되고, 집계 함수를 사용하면 그룹 내의 데이터가 요약됩니다. 각 접근 방식을 구현하기 전에 그 의미를 주의 깊게 고려하십시오. 데이터와 원하는 결과를 기반으로 적절한 집계 함수를 사용하는 것을 잊지 마세요.

위 내용은 SQL에서 GROUP BY 및 ORDER BY 절 충돌로 인해 발생하는 ORA-00979 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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