2013-10-25 56 views
0

對於下表,我想獲得col-D和col-E在每個站點上最後一小時和當前小時之間的差異。 作爲我試圖首先獲得每個網站的最新(當前)小時條目的一部分,但以下查詢僅列出endTime爲01:00:00的條目,當我有條目高達9.00AMmysql檢索當前和最後一小時之間的差異

select distinct(mmeName), endDate, endTime, c_ratio, set_time from attach where 
type='INIT' and Date(endDate)=curDate() and 
Time(endTime) >= DATE_ADD(Time(endTime), INTERVAL -1 HOUR) group by mmeName; 

任何幫助將不勝感激的立即發佈,以及找到目前和過去一小時之間的差異。

enter image description here

+0

DISTINCT不是一個函數,在沒有任何聚合函數的情況下,使用GROUP BY是不合適的。要獲得進一步的幫助,請考慮提供適當的DDL和/或一個小平臺以滿足所需的結果。 – Strawberry

+0

我試圖用這個時間endTime-1Hour(endTime)> = DATE_ADD(時間(endTime),間隔-1小時)。這不正確嗎? – Siva

回答

1

EDITED

我認爲這是你在找什麼。這將爲您提供endTime爲每個mmeName的最新當前時間之前一小時的任何記錄。 'max'子選擇爲每個mmeName獲取最新的結束日期時間,並且在該記錄之前一小時,連接返回記錄。

SELECT mmeName, endDate, endTime, c_ratio, set_time 

FROM attach a 

     JOIN 
     (SELECT mmeName, CONCAT(endDate, ' ' , endTime) max_endDateTime 
     FROM attach 
     WHERE type = 'INIT' 
     ORDER BY endDate DESC, endTime DESC 
     ) AS max ON max.mmeName = a.mmeName 
       AND max.max_endDateTime = DATE_ADD(CONCAT(endDate, ' ' , endTime), INTERVAL 1 HOUR) 

WHERE type = 'INIT' 
; 

ORIGINAL

注意:如果有一個給定mmeName多個匹配的記錄,此查詢將只抓住其中的一個。

EDITED:您需要從WHERE子句中刪除TIME()函數。兩者都有日期和時間,如果你沒有,如果你在凌晨12:00到凌晨1:00之間運行它,它不會返回任何結果。

+0

謝謝湯姆!對不起,我忘了明確說明,因爲有來自不同時區的市場,現在() - 1小時可能不符合所有記錄。 – Siva

+0

你如何考慮時區?你有這個領域嗎? – Tom

+0

這是非常重要的信息,你應該更新你的問題。 – Tom

相關問題