테이블 내 각 범주의 최대 날짜가 있는 ID를 결정하기 위해 PostgreSQL은 적합한 접근 방식을 제공합니다. 샘플 데이터를 살펴보겠습니다.
id | category | date |
---|---|---|
1 | a | 2013-01-01 |
2 | b | 2013-01-03 |
3 | c | 2013-01-02 |
4 | a | 2013-01-02 |
5 | b | 2013-01-02 |
6 | c | 2013-01-03 |
7 | a | 2013-01-03 |
8 | b | 2013-01-01 |
9 | c | 2013-01-01 |
원하는 결과를 얻으려면 PostgreSQL의 DISTINCT ON 절을 활용할 수 있습니다. 이 절을 사용하면 지정된 표현식을 기반으로 고유한 행을 선택하고 결과를 다른 열로 그룹화할 수 있습니다. 이 경우 카테고리별로 행을 그룹화하고 각 그룹 내에서 최대 날짜가 있는 고유 ID를 선택합니다.
이를 수행하기 위한 쿼리는 다음과 같습니다.
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
DISTINCT ON 절 각 개별 범주 값의 첫 번째 항목만 선택되도록 합니다. ORDER BY 절은 먼저 범주별로 결과를 오름차순(알파벳순)으로 정렬한 다음 날짜별로 내림차순으로 정렬합니다. 이렇게 정렬하면 각 범주의 최신 날짜가 있는 행이 먼저 표시됩니다.
이 쿼리를 실행하면 다음 결과가 나타납니다.
id |
---|
7 |
2 |
6 |
이 ID(7, 2, 6)는 다음을 나타냅니다. 카테고리 a, b, c 각각의 최대 날짜입니다.
위 내용은 PostgreSQL에서 각 카테고리의 최대 날짜로 ID를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!