2015-10-19 57 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

相關問題