是否可以在特定時間段內計算特定時間內的數據?mysql在特定日期之間的特定時間段內計算數據
我有一個大的數據集,並要計算的「量」在一天的某些時間之間收集的特定時期。
例如:下面,我要總結00:00之間收集的量 - 14時59爲「數量1」和量15:00之間收集 - 從7月1日20時59分爲「金額2」到7月31日。 '合計金額'= '數量1' + '金額2'
總和(如果( '2012-07-01 00:00:00' 和 '2012-07-31 14點59分00秒' 之間的日期, (金額),0))作爲'金額1', 金額(if('2012-07-01 15:00:00'和'2012-07-31 20:59:00'之間的日期,(金額), 0))作爲'金額2', 總額(金額)爲'總金額'
但是,'總金額'的結果與'金額1'+'金額2'不匹配。
的。 「Amount1 + Amount2」和「TotalAmount」之間的差異是由第一次*和第二次日期*之間既不* GE。你知道這兩個範圍重疊很明顯,對嗎?你可能應該在'IF()'結構中用'WHERE'子句和* times *來限制*日期*。 – jensgram 2012-08-07 16:07:33
謝謝Jensgram! 由於日期列包含日期和時間,因此必須使用TIME()函數並在「Where」子句中指定日期。仍然有一些差異,但會試圖弄清楚。 sum(if('(15:00:00'和'20:59:00',(Amount),0))之間的時間(DATE))作爲'金額1' – Justus 2012-08-07 16:38:50
然而,面臨另一個問題!在'00:00:00' - '14:59:59'和'15:00:00'和'20:59:59'之間運行,但是如果我改變時間以顯示'21:00 :00' - '14:59:59'(next day)and '15:00:00'-'20:59:59','Amount 1'不返回任何值。查詢:SELECT CUSTOMER ID, NAME, SUM(IF(時間(日期)'21之間:00' :00和'14:59:59' ,(金額),0))爲 '數量1', SUM(IF(時間(日期)在'15:00:00'和'20:59:59'之間,(金額),0))爲'金額2', 總金額爲'總金額' FROM CUSTOMER_DATABASE WHERE DATE between' 2012-07-01'和'2012-07-31' group by 1 order by 5 – Justus 2012-08-07 17:10:25