Предположим, у меня есть таблица только с двумя столбцами: id
, maturity
. maturity
– это некоторая дата в будущем, до которой конкретная запись не будет доступна. Таким образом, он различен для разных записей, но не обязательно уникален. И со временем меняется количество записей, не дошедших до этой maturity
даты.
Мне нужно подсчитать количество записей из такой таблицы, которые были доступны на определенную дату (таким образом, записи, которые не достигли своей зрелости). Поэтому мне в основном нужно присоединиться к этим двум запросам:
SELECT generate_series as date FROM generate_series('2015-10-01'::date, now()::date, '1 day');
SELECT COUNT(id) FROM mytable WHERE mytable.maturity > now()::date;
где вместо now()::date
нужно поставить запись из сгенерированного ряда. Я уверен, что это должно быть достаточно просто, но я не могу обойти это. Мне нужно, чтобы полученное решение оставалось запросом, поэтому кажется, что я не могу использовать циклы for.
Примеры записей в таблице:
id | maturity
---+-------------------
1 | 2015-10-03
2 | 2015-10-05
3 | 2015-10-11
4 | 2015-10-11
Ожидаемый результат:
date | count
------------+-------------------
2015-10-01 | 4
2015-10-02 | 4
2015-10-03 | 3
2015-10-04 | 3
2015-10-05 | 2
2015-10-06 | 2
ПРИМЕЧАНИЕ. Это количество не уменьшается постоянно, так как добавляются новые записи, и это количество увеличивается.