PostgreSQL 그룹 쿼리에서 첫 번째 행 선택
그룹화된 데이터로 작업할 때 각 그룹의 첫 번째 또는 마지막 행과 같은 특정 행을 검색해야 하는 경우가 많습니다. 이 튜토리얼의 목표는 PostgreSQL의 그룹화된 쿼리에서 첫 번째 행을 선택하는 방법에 대한 답변입니다.
해결책: DISTINCT ON
PostgreSQL은 그룹 내에서 처음(또는 마지막) 중복 행을 선택할 수 있는 DISTINCT ON이라는 편리한 기능을 제공합니다. 구문은 다음과 같습니다.
<code class="language-sql">SELECT DISTINCT ON (DISTINCT_COLUMNS) COLUMNS FROM TABLE ORDER BY GROUPING_COLUMN, SORT_ORDER;</code>
주어진 문제에 적용
제공된 예에서는 가장 높은 총 가치를 기준으로 구매 테이블에서 각 고객의 첫 번째 행을 검색하려고 합니다. DISTINCT ON을 사용하여 다음을 달성할 수 있습니다.
<code class="language-sql">SELECT DISTINCT ON (customer) id, customer, total FROM purchases ORDER BY customer, total DESC, id;</code>
이 쿼리는 원하는 결과를 출력합니다.
FIRST(id) | customer | FIRST(total) |
---|---|---|
1 | Joe | 5 |
2 | Sally | 3 |
설명
DISTINCT ON (customer)
고객 열을 기준으로 결과를 그룹화하고 다른 값을 선택하도록 지정합니다. ORDER BY customer, total DESC, id
먼저 고객별로(그룹화용) 결과를 정렬한 다음 총계별로 내림차순으로(총계 값이 가장 높은 첫 번째 행 찾기), 마지막으로 ID별로 정렬하여 충돌을 해결합니다(있는 경우). 추가 참고사항
DISTINCT ON
절은 ORDER BY
절 내에 포함되어야 하지만 표준에서는 추가 ID 열이 필요하지 않습니다. NULLS LAST
을 ORDER BY
절에 추가해야 합니다. <code class="language-sql">ORDER BY customer, total DESC NULLS LAST, id;</code>
결론
PostgreSQL의 DISTINCT ON 기능은 그룹화된 쿼리에서 첫 번째(또는 마지막) 행을 선택하는 효율적이고 유연한 방법을 제공합니다. 이 기능을 활용하면 개발자는 그룹화된 데이터를 쉽게 분석하고 필요한 정보를 검색할 수 있습니다.
위 내용은 PostgreSQL 그룹 쿼리에서 첫 번째 행을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!