私の質問に続けてHow can I take two rows for one Distinct value in postgresql?postgresqlの1つのDistinct値に対して2行をとるにはどうすればいいですか?
上記質問私は別の列から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
表はCOLUMN2に別個のものでなければならない、それはまた
これが可能である一緒に列に同じ値のマッピング2つの行を維持する必要があります:私はこの結果を与えるクエリを必要とする?
予想される出力は、実際の出力と同じです。 – redneb
@rednebいいえ実際には、タイムスタンプを見ると、その次に来る必要がある行の順番を変更する –
それでは、単にORDER BYを追加してください。 – redneb