[SQL] PostgreSQL는 주어진 ID에 대한 가장 최근 항목을 선택
SQLPostgreSQL는 주어진 ID에 대한 가장 최근 항목을 선택
표는 기본적으로 다음과 같습니다
연속 ID, ID, 일자, 데이터, 데이터, 데이터 등
동일한 ID에 대한 여러 행이있을 수 있습니다. 나는 각 ID에 대한 가장 최근의 항목을 보여줍니다 보고서에 사용되는이 테이블의 뷰를 작성하고 싶습니다. 그것은 모든 열을 표시해야합니다.
는 SQL을 가진 사람의 도움을 나를 선택할 수 있습니까? 감사.
해결법
-
==============================
1.이이 작업을 수행하는 약 5 가지 방법은,하지만 여기에 하나 :
이이 작업을 수행하는 약 5 가지 방법은,하지만 여기에 하나 :
SELECT * FROM yourTable AS T1 WHERE NOT EXISTS( SELECT * FROM yourTable AS T2 WHERE T2.ID = T1.ID AND T2.Date > T1.Date )
그리고 여기에 또 다른입니다 :
SELECT T1.* FROM yourTable AS T1 LEFT JOIN yourTable AS T2 ON ( T2.ID = T1.ID AND T2.Date > T1.Date ) WHERE T2.ID IS NULL
하나 더:
WITH T AS ( SELECT *, ROW_NUMBER() OVER(PARTITION BY ID ORDER BY Date DESC) AS rn FROM yourTable ) SELECT * FROM T WHERE rn = 1
좋아, 내가 여기에 내가 (지금은) 게시합니다 마지막이다, 멀리 실시 점점 해요 :
WITH T AS ( SELECT ID, MAX(Date) AS latest_date FROM yourTable GROUP BY ID ) SELECT yourTable.* FROM yourTable JOIN T ON T.ID = yourTable.ID AND T.latest_date = yourTable.Date
-
==============================
2.나는 DISTINCT ON을 사용
나는 DISTINCT ON을 사용
CREATE VIEW your_view AS SELECT DISTINCT ON (id) * FROM your_table a ORDER BY id, date DESC;
이 괄호 안의 식의 중복과 억압 행에 있기 때문에 별개의 작동합니다. 의하여 순서 DESC 정렬은 일반적으로 마지막 하나는 제 것이고, 그 결과에 보여 그 하나 그에.
https://www.postgresql.org/docs/10/static/sql-select.html#SQL-DISTINCT
-
==============================
3.이 상관 관계 서브 쿼리에 대한 좋은 사용처럼 보인다 :
이 상관 관계 서브 쿼리에 대한 좋은 사용처럼 보인다 :
CREATE VIEW your_view AS SELECT * FROM your_table a WHERE date = ( SELECT MAX(date) FROM your_table b WHERE b.id = a.id )
귀하의 날짜 열 고유 (타임 스탬프 타입 등) 각 행을 식별해야합니다.
from https://stackoverflow.com/questions/9472731/postgresql-selecting-most-recent-entry-for-a-given-id by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MSSQL 2008 R2 집계 기능이없는 피벗 (0) | 2020.06.13 |
---|---|
[SQL] MySQL의 : 계산 된 열 (0) | 2020.06.13 |
[SQL] 여러 열을 일치 뚜렷한 결과를 제공 SQL 쿼리 (0) | 2020.06.13 |
[SQL] plpgsql의 트리거 기능에 여러 열을 업데이트 (0) | 2020.06.13 |
[SQL] SQL : 실시간 트랜스 (0) | 2020.06.13 |