> 데이터 베이스 > MySQL 튜토리얼 > PostgreSQL이 GROUP BY 또는 집계 함수에 집계되지 않은 열을 요구하는 이유는 무엇입니까?

PostgreSQL이 GROUP BY 또는 집계 함수에 집계되지 않은 열을 요구하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-18 09:46:38
원래의
747명이 탐색했습니다.

Why Does PostgreSQL Require Non-Aggregated Columns in GROUP BY or Aggregate Functions?

PostgreSQL의 GROUP BY 절: 일반적인 오류 해결

PostgreSQL의 엄격한 GROUP BY 동작으로 인해 ""the_table.col3" 열은 GROUP BY 절에 나타나거나 집계 함수에 사용되어야 합니다."라는 오류가 발생하는 경우가 많습니다. 이 문서에서는 이 동작을 명확하게 설명하고 해결 방법을 제공합니다.

SQL의 집계 함수 이해

MIN, MAX, SUM, COUNT, AVG 등의 집계 함수는 그룹 내의 데이터를 요약합니다. 여러 입력 값에서 단일 결과를 생성합니다.

PostgreSQL GROUP BY 오류 설명

해당 집계 함수 없이 GROUP BY 절을 사용하면 오류가 발생합니다. 쿼리는 그룹화의 일부가 아닌 다른 집계되지 않은 열(col2, col3)을 선택하면서 집계되지 않은 열(예: col1)을 기준으로 행을 그룹화하려고 시도합니다. PostgreSQL에서는 선택된 모든 비집계 열이 GROUP BY 절에 있거나 집계 함수에 의해 처리되도록 요구합니다.

PostgreSQL과 MySQL 비교 GROUP BY 처리

MySQL의 GROUP BY 구현은 덜 엄격합니다. GROUP BY 절에 없는 집계되지 않은 열을 선택할 수 있지만 이로 인해 특히 해당 열이 그룹 내에서 다양한 값을 갖는 경우 예측할 수 없는 값이 발생할 수 있습니다. 이 동작은 표준 SQL을 준수하지 않습니다.

PostgreSQL GROUP BY 쿼리 수정

PostgreSQL 오류를 수정하려면 SELECT 목록의 집계되지 않은 모든 열에 집계 함수를 적용하세요. 예:

<code class="language-sql">SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table
GROUP BY col2;</code>
로그인 후 복사

이 수정된 쿼리는 정확한 그룹화를 보장하고 각 그룹 내 col3col1의 최소값을 계산합니다.

모범 사례 및 SQL 표준

데이터 일관성과 예측 가능한 결과를 보장하려면 항상 GROUP BY과 함께 집계 함수를 사용하세요. 이는 SELECT 목록의 집계되지 않은 열이 GROUP BY 절에 있거나 그룹화 열에 기능적으로 종속되어야 한다는 SQL92 표준과 일치합니다.

위 내용은 PostgreSQL이 GROUP BY 또는 집계 함수에 집계되지 않은 열을 요구하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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