Я работаю на Postgres 9.3.2 и у меня есть эта таблица:Postgresql не row_number заказа по дате
id startdate enddate no_of_days_between
1 2010-12-22 2010-12-23 1
1 2010-12-23 2010-12-24 1
1 2010-12-24 2010-12-25 1
1 2010-12-25 2010-12-26 1
1 2010-12-26 2010-12-27 1
1 2010-12-27 2010-12-28 1
1 2010-12-28 2010-12-29 1
1 2010-12-29 2011-03-06 67
1 2011-03-06 2011-03-07 1
1 2011-03-07 2011-03-08 1
1 2011-03-08 2011-03-09 1
и то, что я хочу сделать, это найти серию последовательных дней. Для этого я использую функцию окна row_number в этом запросе:
select t.*, row_number() over (partition by no_of_days_between order by enddate) as no_of_consecutive_days from t
То, что я хочу обратно что-то вроде этого:
id startdate enddate no_of_days no_of_consecutive_days
_between
1 2010-12-22 2010-12-23 1 1
1 2010-12-23 2010-12-24 1 2
1 2010-12-24 2010-12-25 1 3
1 2010-12-25 2010-12-26 1 4
1 2010-12-26 2010-12-27 1 5
1 2010-12-27 2010-12-28 1 6
1 2010-12-28 2010-12-29 1 7
1 2010-12-29 2011-03-06 67 1
1 2011-03-06 2011-03-07 1 1
1 2011-03-07 2011-03-08 1 2
1 2011-03-08 2011-03-09 1 3
однако, что запрос возвращает больше похож он первый по заказу no_of_days_between, а затем по окончанию, чтобы я вернулся:
id startdate enddate no_of_days no_of_consecutive_days
_between
1 2010-12-22 2010-12-23 1 1
1 2010-12-23 2010-12-24 1 2
1 2010-12-24 2010-12-25 1 3
1 2010-12-25 2010-12-26 1 4
1 2010-12-26 2010-12-27 1 5
1 2010-12-27 2010-12-28 1 6
1 2010-12-28 2010-12-29 1 7
1 2011-03-06 2011-03-07 1 8
1 2011-03-07 2011-03-08 1 9
1 2011-03-08 2011-03-09 1 10
1 2010-12-29 2011-03-06 67 1
Неужели кто-нибудь сталкивался с этой проблемой раньше? как я могу заставить его заказать сначала, а затем раздел?
Благодаря
Я понимаю, что, однако, порядок по-прежнему не видит данных правильно. Он заказал его по столбцу, который я попросил его разделить. – mskem