> 데이터 베이스 > MySQL 튜토리얼 > SQL의 각 그룹 내 최대값을 선택하는 방법은 무엇입니까?

SQL의 각 그룹 내 최대값을 선택하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-29 18:24:11
원래의
633명이 탐색했습니다.

How to Select the Maximum Value within Each Group in SQL?

최대값 선택을 통한 SQL 그룹화

SQL에서 GROUP BY 절을 사용하면 지정된 열을 기준으로 행을 그룹화할 수 있습니다. MAX 함수와 함께 사용하면 각 그룹에서 가장 큰 값을 선택하는 데 사용할 수 있습니다.

문제 설명

다음 데이터가 포함된 테이블이 있다고 가정합니다.

ID Name AlarmID AlarmUnit AlarmLevel
1 Test Voltage PSU Warning
2 Test Voltage PSU Ceased
3 Test Voltage PSU Warning
4 Test Temperature RCC Warning
5 Test Temperature RCC Ceased

AlarmID 및 AlarmUnit으로 정의된 각 그룹에 대해 가장 최근 정보만 검색하려고 합니다. 예상되는 출력은 다음과 같습니다.

ID Name AlarmID AlarmUnit AlarmLevel
3 Test Voltage PSU Warning
5 Test Temperature RCC Ceased

솔루션

이 문제를 해결하려면 Oracle, SQL Server 2005 및 PostgreSQL 8.4에서 다음 쿼리를 사용할 수 있습니다.

SELECT  *
FROM    (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY alarmId, alarmUnit ORDER BY id DESC) AS rn
        FROM    TableName
        ) q
WHERE   rn = 1
로그인 후 복사

MySQL의 경우 쿼리는 다음과 같습니다.

SELECT  mi.*
FROM    (
        SELECT  alarmId, alarmUnit, MAX(id) AS mid
        FROM    TableName
        GROUP BY
                alarmId, alarmUnit
        ) mo
JOIN    TableName mi
ON      mi.id = mo.mid
로그인 후 복사

For PostgreSQL 8.3 이하에서는 다음을 사용할 수 있습니다.

SELECT  DISTINCT ON (alarmId, alarmUnit) *
FROM    TableName
ORDER BY
        alarmId, alarmUnit, id DESC
로그인 후 복사

위 내용은 SQL의 각 그룹 내 최대값을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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