내 질문에 계속 How can I take two rows for one Distinct value in postgresql?postgresql에서 하나의 Distinct 값에 대해 두 행을 취하는 방법은 무엇입니까?
위의 질문에 나는 별개의 열에서 2 개의 값을 취하는 기본적인 문제에 대한 해결책을 얻었다.
하지만 내 테이블
demo_table
id | column1 | column2 | timestamp
1 | 1 | 3 | 2016-09-23 00:20:20
2 | 2 | 3 | 2016-09-24 00:20:20
3 | 3 | 4 | 2016-09-24 00:20:20
4 | 4 | 3 | 2016-09-25 00:20:20
5 | 5 | 4 | 2016-09-25 00:20:20
6 | 6 | 3 | 2016-09-27 00:20:20
7 | 7 | 5 | 2016-09-28 00:20:20
8 | 8 | 5 | 2016-09-28 00:20:20
9 | 9 | 3 | 2016-09-30 00:20:20
쿼리에 타임 스탬프를 도입 때 작업을, 나는 새로운 질문
을 발견하면서
select id, column1, column2
from (
select id, column1, column2,
row_number() over (partition by column2 order by id) as rn
from demo_table
) t
where rn <= 2;
내가 무엇을 기대 반환하지 않았습니다 :
id | column1 | column2 | timestamp
3 | 3 | 4 | 2016-09-24 00:20:20
5 | 5 | 4 | 2016-09-25 00:20:20
6 | 6 | 3 | 2016-09-27 00:20:20
7 | 7 | 5 | 2016-09-28 00:20:20
8 | 8 | 5 | 2016-09-28 00:20:20
9 | 9 | 3 | 2016-09-30 00:20:20
id | column1 | column2 | timestamp
6 | 6 | 3 | 2016-09-27 00:20:20
9 | 9 | 3 | 2016-09-30 00:20:20
5 | 5 | 4 | 2016-09-25 00:20:20
3 | 3 | 4 | 2016-09-24 00:20:20
7 | 7 | 5 | 2016-09-28 00:20:20
8 | 8 | 5 | 2016-09-28 00:24:20
표는 2 열에서 구별해야하고 또한
이 가능 함께 열에서 같은 값의 매핑이 행을 유지해야한다 :이 결과를 줄 것이다 질의를 필요로?
예상 출력은 행의 순서에 따라 실제 출력과 같습니다. – redneb
@redneb 아니, 실제로 u가 타임 스탬프를 보게되면 그 순서가 바뀌어야하는 행의 순서가 바뀐다. –
그래서 'ORDER BY'를 추가하면된다. – redneb