SQL 오류: 열이 GROUP BY 절에 나타나거나 집계 함수로 사용되어야 합니다.
그룹화된 집계 쿼리를 실행할 때 선택한 열이 GROUP BY
절에 나타나거나 집계 함수 계산에 참여하는지 확인해야 합니다. 그렇지 않으면 "열이 GROUP BY 절에 나타나거나 집계 함수로 사용되어야 합니다."와 유사한 오류 메시지가 나타납니다.
문제 설명
makerar
, cname
, wmname
열이 있는 avg
이라는 테이블이 있다고 가정합니다. 목표는 각각의 개별 cname
에 대해 최대 avg
값을 얻는 것입니다. 그러나 다음 쿼리를 실행하십시오.
<code class="language-sql">SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname;</code>
열은 wmname
절에 포함되지도 않고 집계 함수로 사용되지도 않기 때문에 오류가 발생합니다. GROUP BY
솔루션
이 문제를 해결하는 두 가지 주요 방법은 다음과 같습니다.
1. 하위 쿼리 및 조인 방법
이 방법은 하위 쿼리를 사용하여 각의 최대 cname
값을 계산한 다음 하위 쿼리를 기본 테이블과 조인하여 해당 avg
:wmname
을 검색합니다.
<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 t.mx = m.avg ;</code>
2. 윈도우 기능 방식
창 함수는 그룹 내에서 집계 계산을 수행하는 더 간단한 대안을 제공합니다.
<code class="language-sql">SELECT cname, wmname, MAX(avg) OVER (PARTITION BY cname) AS mx FROM makerar ;</code>
참고: 창 기능은 각 에 대한 최대 cname
값을 올바르게 표시하지만 중복된 기록이 발생할 수 있습니다. avg
위 내용은 SQL 쿼리에서 '열이 GROUP BY 절에 나타나거나 집계 함수에 사용되어야 합니다'가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!