我有查询,它提供:
itemid deadlineneeded delievrydate quantity
200 15/07/15 14/07/15 5
200 15/07/15 14/07/15 10
200 15/07/15 13/07/15 25
201 15/07/15 14/07/15 30
200 14/07/15 10/07/15 3
201 15/07/15 15/07/15 100
它提供来自多个表的信息。基本上它意味着当物品到达仓库(delievrydate)和多少。截止日期意味着我将要使用它。
我的目标是找出在截止日期前一天到达的itemid的总数量。
例如我想得到的最后一个数据:
itemid deadlineneeded quantity
200 15/07/15 43 (5+10+25+3)
200 14/07/15 3 //5+10+25 not included because deliverydate
201 15/07/15 30 //100 not included because deliverydate
我如何得到它?
答案 0 :(得分:1)
SELECT itemid, deadlineneeded, sum(quantity) AS total_quantity
FROM <your table>
WHERE (deadlineneeded - delievrydate)::int >= 1
GROUP BY 1, 2
ORDER BY 1, 2;
这使用&#34; delievrydate&#34; (对我而言,这似乎是一个错字)至少在#34;截止日期前#1;#34;日期,如您的样本数据所示。
答案 1 :(得分:0)
select distinct date_trunc('day',deadlineneeded),sum from
(select *,sum(quantity) over (partition by deadlineneeded-delievrydate) from tablename) t
where deadlineneeded-delievrydate = '1 day';
答案 2 :(得分:0)
将GROUP BY
与汇总功能SUM
结合使用。
select itemid, deadlineneeded, SUM(quantity)
from tablename
where deadlineneeded = delievrydate + 1
group by itemid, deadlineneeded
where deadlineneeded = delievrydate + 1
部分通常是产品特定的,我不知道postgresql ... ANSI SQL有deadlineneeded = delievrydate + interval'1' day
。