2015-12-21 221 views
0

我想爲最近7天的每天獲取每個產品的最後一個時間戳。數據庫中有數千條記錄。我怎樣才能做到這一點與查詢。大約有25種不同的產品,每種產品每天有大約50個時間戳。最近7天的最後時間戳

表:BuildData

'Timestamp' | 'Product' | 'BuildNo' 

'2015-10-21 12:12:00', 'AB', '809' 
'2015-10-21 13:12:00', 'AB', '44' 
'2015-10-21 12:12:00', 'CD', '408' 
'2015-10-21 13:12:00', 'CD', '15' 
'2015-10-21 12:12:00', 'ABC', '1699' 
'2015-10-21 13:12:00', 'ABC', '1051' 
'2015-10-21 14:12:00', 'ABC', '66' 
'2015-10-21 15:12:00', 'ABC', '120' 
'2015-10-21 13:12:00', 'XYZ', '928' 
'2015-10-21 13:12:00', 'XYZ', '37' 
'2015-10-21 16:12:00', 'XYZ', '137' 
+0

您是否試圖解決所有需求?如果是,請告訴我們 – Bayeni

回答

2

通過使用DATE()隱蔽的時間戳搶在表中的所有日期。然後將日期和產品列分組在一起,並在時間戳列上運行MAX()以獲取每個產品的最後一次時間戳。

SELECT DATE(Timestamp) AS Date, Product, MAX(Timestamp) AS Last_timestamp 
FROM Builddata 
WHERE BETWEEN DATE_SUB(NOW(),INTERVAL 1 WEEK) and NOW(); 
GROUP BY Date, Product 
+0

Op還要求提供'where'子句 - 「最近7天」。 'where timestamp> date_sub(CURDATE(),interval 7 day)'會做。 – Timekiller

+0

@Timekiller謝謝,我忘了那部分 –

+0

@勞埃德銀行 - 它只給出了一個產品的最後時間戳。輸出必須包括每個產品的7個時間戳(每天的最後一個時間戳)。感謝您的快速響應 –

0
Select 
Timestamp, 
Product, 
BuildNo 
from Yourtable 
inner join 
-- Selecting max data per product per day 
(Select max(timestamp) as MaxTimestamp, Product as MaxProduct from yourTBL 
-- You only want the data for the last 7 days 
where datediff(timestamp,current_timestamp)<7 
group by Product, date_add(0,INTERVAL (datediff(0,timestamp)) DAY )MaxTbl 
on MaxProduct = Product and MaxTimestamp=Timestamp 
+0

@ Andrej你能解釋一下這個查詢嗎 –