"GROUP BY 절에 나타나거나 집계 함수에 사용되어야 합니다" SQL 오류 해결
쿼리가 데이터를 그룹화하지만(GROUP BY
사용) 그룹화에 포함되지 않은 열을 선택할 때 "열 "makerar.wmname"은 GROUP BY 절에 나타나거나 집계 함수에 사용되어야 합니다."라는 SQL 오류가 발생합니다. SQL에서는 GROUP BY
절에 없는 선택된 열을 집계(예: MAX
, MIN
, AVG
, SUM
, COUNT
사용)하거나 생략해야 합니다.
해결책:
이 문제를 해결하기 위한 몇 가지 접근 방식은 다음과 같습니다.
wmname
절에 GROUP BY
포함:
각 고유 wmname
과 관련된 모든 cname
값이 필요한 경우 가장 간단한 솔루션입니다.
<code class="language-sql">SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname, wmname;</code>
최대값 및 JOIN에 대한 하위 쿼리:
이 접근 방식은 각 wmname
에 대해 최대 avg
에 해당하는 cname
만 필요할 때 유용합니다.
<code class="language-sql">SELECT m.cname, m.wmname, t.mx FROM ( SELECT cname, MAX(avg) AS mx FROM makerar GROUP BY cname ) t JOIN makerar m ON m.cname = t.cname AND m.avg = t.mx;</code>
이것은 먼저 하위 쿼리의 각 avg
에 대한 최대 cname
를 찾습니다. 그런 다음 이 결과를 원래 테이블에 다시 조인하여 해당 wmname
.
창 기능(지원되는 경우):
귀하의 데이터베이스 시스템이 창 기능을 지원하는 경우(대부분의 최신 시스템이 지원함) 이는 간결하고 효율적인 솔루션을 제공합니다.
<code class="language-sql">SELECT cname, wmname, MAX(avg) OVER (PARTITION BY cname) AS mx FROM makerar;</code>
창 함수는 원래 행 구조를 변경하지 않고 각 avg
파티션에 대해 최대 cname
를 계산합니다. 고유한 결과만 원하는 경우 DISTINCT
가 필요할 수 있습니다.
이러한 방법 중 하나를 구현하면 avg
열을 적절하게 처리하면서 각 cname
에 대한 최대 평균(wmname
)을 올바르게 검색하여 SQL 오류를 제거할 수 있습니다. 특정 데이터 요구 사항과 데이터베이스 기능에 가장 적합한 솔루션을 선택하세요.
위 내용은 내 SQL 쿼리에서 '열은 GROUP BY 절에 나타나거나 집계 함수에 사용되어야 합니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!