В продолжение моего вопроса How can I take two rows for one Distinct value in postgresql?Как я могу взять две строки для одного значащего значения по времени в postgresql?
В приведенном выше вопросе я получил решение по моей основной проблеме принятия двух значений из отдельной колонки.
Но во время работы над ней, я нашел новый вопрос
Когда я ввел временную метку к моему столу
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 и он также должен держать отображения двух рядов же значения в столбце вместе
Возможно ли это?
Ваш ожидаемый результат такой же, как и фактический вывод, за исключением порядка строк. – redneb
@redneb нет, если вы посмотрите на временные метки, изменив порядок строк, которые должны появиться после других –
Так что просто добавьте 'ORDER BY'. – redneb