재고가없는 제품 수를 알려주는 쿼리를 작성했습니다. 제조업체가 일부 상태 코드와 함께 반환 한 주문을 보면 알 수 있습니다. 제품, 날짜 및 스토리지, 즉 다음과 같습니다 :이 같은 답변을 생산일부 행으로 그룹화 된 발생 수를 계산합니다.
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 일 이상 등의 재고가 없어졌습니다.
그래서 첫 번째 쿼리에 대해 새 계산을 수행하고 정의 된 일 간격으로 결과 행을 집계해야한다고 생각합니다.
Postgres (http://www.postgresql.org/docs/7.3/static/functions-datetime.html)의 datetime 함수를 살펴 보았지만 필요한 항목을 찾을 수 없습니다.
테이블 간의 관계에 대해 자세히 알려줘야합니다. 그 1 : 1 관계가 있습니까? 또는 1 : n? 왜 LEFT JOINs인가? 어떤 테이블이 일치하는 행을 가질 수 있습니까? –