2015-10-19 58 views
0

我有PostgreSQL中的表是日志warhouse活动:如何按时间戳字段进行分组?

productid action qty    time 
5436   in 30  2014-09-18 11:46:25.113862 
5436   in 30  2014-09-18 11:46:25.113862 
5436   in 30  2015-10-18 08:13:11.124452 
5436   in 30  2015-10-18 10:15:22.541125 
2048   in 20  2014-09-18 11:46:35.873401 
2048   in 80  2014-09-18 11:46:35.873401 
2048   out 20  2014-09-18 11:46:35.873401 

timeTIME STAMP WITHOUT TIME ZONE

我想每天每qtyproductidin只)的SUM。 为上表中的结果将是:

productid qty  date 
5436  60 2014-09-18 
5436  60 2015-10-18 
2048  80 2014-09-18 

Normaly我会做:

Select sum(qty) 
from A 
where action like 'in' 
group by (partid,time) 

但是这是行不通的,因为它不知道该产品54362015-10-18 08:13:11.1244522015-10-18 10:15:22.541125应归一起。

回答

2

这应该为你做它:

select productid, time::DATE as dt, sum(qty) 
from tablename 
where action like 'in' 
group by productid, time::DATE 

请注意,我们是您铸造时间戳日期以获得期望的结果。

例SQLFiddle:http://sqlfiddle.com/#!15/45b37/2

+0

可以更新与预期输出你的问题?这将有助于理解你真正渴望的东西。您的输出目前不显示时间戳。 – zedfoxus

1
SELECT productid --1 
     ,sum(qty) qty -- 2 
     ,TIME::DATE DATE --3 
FROM A 
WHERE action = 'in' 
GROUP BY 1 --(productid) 
     ,3 --(TIME::DATE DATE) 

sqlfiddle

相关问题