PostgreSQL GROUP BY 그룹에서 첫 번째 행 선택
PostgreSQL에서는 GROUP BY 작업에서 각 그룹의 첫 번째 행을 선택하는 것이 일반적인 요구 사항입니다. 이를 위해 강력한 DISTINCT ON
절을 사용할 수 있습니다.
<code class="language-sql">SELECT DISTINCT ON (customer) id, customer, total FROM purchases ORDER BY customer, total DESC</code>
DISTINCT ON
절을 사용하면 중복으로 간주되는 표현식을 정의할 수 있습니다. 이 예에서는 customer
열을 지정했습니다. 이는 customer
값이 동일한 행만 중복으로 간주된다는 의미입니다.
ORDER BY
절은 행이 처리되는 순서를 정의합니다. 각 customer
그룹의 첫 번째 행은 총계 값이 가장 높은 행이 됩니다. 동일한 최대 합계 값을 갖는 행이 여러 개 있는 경우 결정 요인은 id
열이 정의된 순서입니다.
핵심사항
DISTINCT ON
은 중복을 결정하는 표현식을 지정할 수 있는 PostgreSQL의 확장입니다. DISTINCT ON
표현식은 ORDER BY
절의 선행 표현식과 일치해야 합니다. ORDER BY
절을 사용하여 각 그룹 내 행의 우선순위를 지정할 수 있습니다. SELECT
또는 DISTINCT ON
절에 없는 표현식을 ORDER BY
목록에 포함할 수 있습니다. customer
, total
및 id
열에 걸쳐 있는 다중 열 인덱스가 최고의 성능을 제공합니다. 추가 참고사항
customer
높은 열 카디널리티(고객당 행 수가 적음)가 있는 데이터의 경우 DISTINCT ON
방법이 매우 효율적입니다. 그러나 열 카디널리티가 낮은(고객당 행 수가 많은) customer
데이터의 경우 다른 쿼리 기술이 더 효율적일 수 있습니다.
위 내용은 쿼리로 PostgreSQL 그룹에서 각 그룹의 첫 번째 행을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!