ID별로 그룹화된 최대 열 값을 찾는 SQL 쿼리
이 기사에서는 데이터베이스 테이블 내의 고유 ID로 그룹화된 열에서 가장 높은 값을 효율적으로 검색하는 문제를 다룹니다. "SCORES" 테이블을 예로 들어 보겠습니다.
<code>ID ROUND SCORE 1 1 3 1 2 6 1 3 2 2 1 10 2 2 12 3 1 6</code>
우리의 목표는 해당 "SCORE"와 함께 각 "ID"에 대한 최대 "ROUND" 값을 포함하는 행을 얻는 것입니다. 원하는 출력은 다음과 같습니다.
<code>ID ROUND SCORE 1 3 2 2 2 12 3 1 6</code>
하위 쿼리 접근 방식이 가능하지만 대규모 데이터세트에는 비효율적일 수 있습니다. 창 기능을 활용하는 뛰어난 방법은 다음과 같습니다.
<code class="language-sql">SELECT DISTINCT id ,max(round) OVER (PARTITION BY id) AS round ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score FROM SCORES WHERE id IN (1,2,3) ORDER BY id;</code>
이 쿼리는 max(round) OVER (PARTITION BY id)
을 활용하여 각 "ID"에 대한 최대 "ROUND"를 결정합니다. first_value(score) OVER (PARTITION BY id ORDER BY round DESC)
그런 다음 최대 "ROUND"와 연관된 "SCORE"를 검색합니다. DISTINCT
"ID"당 하나의 행만 반환되도록 보장합니다.
이 창 기능 접근 방식은 여러 테이블 스캔을 방지하여 대규모 데이터베이스에 훨씬 더 효율적인 솔루션을 제공합니다.
위 내용은 SQL에서 ID별로 그룹화된 열의 가장 높은 값을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!