Похоже, это не будет достаточно гибким решением для ваших нужд, но чтобы ответить на ваш вопрос напрямую, вот запрос, который даст вам то, что вам нужно.
Кроме того, поскольку вы не указали имена таблиц / столбцов, моя тестовая таблица, которую я использовал, называется foo
и содержит столбцы created
и value
.
select
foo.created, foo.value
from
-- Subquery to pick first record to base rest of query on
(
select
created,
strftime('%d', created) as day
from
foo
order by
created
limit 1
) as bar
-- Join all rows in foo that are greater than that found in 'bar'
-- and has the same day of the month.
join foo
on foo.created >= bar.created
and strftime('%d', foo.created) = bar.day
Результаты:
2011-01-02|4.0
2011-02-02|5.5
2011-03-02|2.5
ПРИМЕЧАНИЕ - это, вероятно, довольно неэффективно из-за того, что все strftime
выполняются (я предполагаю, что здесь нельзя использовать индекс).
ПРИМЕЧАНИЕ 2 - этот запрос не относится к интервалам, отличным от ровно один месяц, не делает ничего особенного, если две записи имеют одинаковую дату, или распознает, если в данные (пример: если дата 2011-02-02
отсутствует, она все равно будет возвращать дату 2011-03-02
).