Я сделал запрос, чтобы принести мне количество продуктов, которые не были на складе (я знаю, что, посмотрев заказы, которые производитель вернул с некоторым кодом состояния), продукт, дата и хранения, который выглядит следующим образом:Подсчитайте количество записей, сгруппированных по некоторым строкам
SELECT count(*) as out_of_stock,
prod.id as product_id,
ped.data_envio::date as date,
opl.id as storage_id
from sub_produtos_pedidos spp
left join cad_produtos prod ON spp.ean_produto = prod.cod_ean
left join sub_pedidos sp ON spp.id_pedido = sp.id
left join pedidos ped ON sp.id_pedido = ped.id
left join op_logisticos opl ON sp.id_op_logistico = opl.id
where spp.motivo = '201' -- this is the code that means 'not in inventory'
group by storage_id,product_id,date
это дает ответ так:
out_of_stock | product_id | date | storage_id
--------------|------------|-------------|-------------
1 | 5 | 2012-10-16 | 1
5 | 4 | 2012-10-16 | 2
Теперь мне нужно, чтобы получить число вхождений, по видам продукции и хранения продуктов, были в наличии в течение 2 или более дней, 5 или более дней и так далее.
Так что, я думаю, мне нужно сделать новый счет для первого запроса, агрегируя результирующие строки в определенные определенные интервалы времени.
Я пробовал смотреть функции datetime в Postgres (http://www.postgresql.org/docs/7.3/static/functions-datetime.html), но не смог найти то, что мне нужно.
Вы должны рассказать нам больше о взаимосвязи между таблицами. Являются ли эти отношения 1: 1? Или 1: n? Почему ЛЕВЫЕ ПРИСОЕДИНЯЮТСЯ? В каких таблицах нет соответствующих строк? –