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 중국어 웹사이트의 기타 관련 기사를 참조하세요!