postgresql复杂组在查询中

时间:2015-06-23 08:40:20

标签: sql postgresql

我有查询,它提供:

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

我如何得到它?

3 个答案:

答案 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