I have a query that gives:
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
It gives the information from multiple tables. Basically it means When items arrive to warehouse (delievrydate) and how many. The deadlineneeded means when i'm going to use it.
My goal is to find out the total quantity of itemid that arrives 1 day before deadlineeded.
for example with the last data I want to get:
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
How do i get it?
SELECT itemid, deadlineneeded, sum(quantity) AS total_quantity
FROM <your table>
WHERE (deadlineneeded - delievrydate)::int >= 1
GROUP BY 1, 2
ORDER BY 1, 2;
This uses a "delievrydate" (looks like a typo to me) that is at least 1 day before the "deadlineneeded" date, as your sample data is suggesting.
select distinct date_trunc('day',deadlineneeded),sum from
(select *,sum(quantity) over (partition by deadlineneeded-delievrydate) from tablename) t
where deadlineneeded-delievrydate = '1 day';
Use GROUP BY
combined with aggregate function SUM
.
select itemid, deadlineneeded, SUM(quantity)
from tablename
where deadlineneeded = delievrydate + 1
group by itemid, deadlineneeded
The where deadlineneeded = delievrydate + 1
part is typically product specific, and I don't know postgresql... ANSI SQL has deadlineneeded = delievrydate + interval'1' day
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.