[英]How do I select a summed range of columns from MySQL within a 24 hour period?
我有大量的數據,我試圖根據24小時內的發生次數來計算一列的總和。
下表如下:
ID Customer LOCATION FROM_DATETIME TO_DATETIME Amount 24Revenue
23100470 Customer01 Idaho 2014-03-23 23:40 2014-03-24 00:00 8.20 26.65
23111106 Customer01 Idaho 2014-03-24 07:06 2014-03-24 07:26 0.00 22.14
23111865 Customer01 Idaho 2014-03-24 07:27 2014-03-24 07:30 0.00 22.14
23112909 Customer01 Idaho 2014-03-24 07:56 2014-03-24 08:06 3.69 22.14
23122768 Customer01 Idaho 2014-03-24 11:38 2014-03-24 11:46 3.28 18.45
23125519 Customer01 Idaho 2014-03-24 12:35 2014-03-24 12:38 1.23 15.17
23126385 Customer01 Idaho 2014-03-24 12:53 2014-03-24 13:00 2.87 13.94
23141213 Customer01 Idaho 2014-03-24 19:58 2014-03-24 20:16 7.38 11.07
23155172 Customer01 Idaho 2014-03-25 06:52 2014-03-25 07:01 3.69 3.69
23165719 Customer02 Idaho 2014-03-25 10:52 2014-03-25 13:34 44.97 70.21
23173857 Customer02 Idaho 2014-03-25 13:36 2014-03-25 13:43 2.87 25.24
23174971 Customer02 Idaho 2014-03-25 14:00 2014-03-25 14:04 1.64 22.37
23176607 Customer02 Idaho 2014-03-25 14:40 2014-03-25 14:52 4.51 20.73
23178488 Customer02 Idaho 2014-03-25 15:24 2014-03-25 16:04 0.00 16.22
23181743 Customer02 Idaho 2014-03-25 16:42 2014-03-25 17:45 16.22 16.22
目前,我正在選擇一個為期1周的數據集:
SELECT ID, Customer, from_datetime, to_datetime, location
WHERE to_datetime BETWEEN '2014-03-24 00:00:00' AND '2014-03-31'
AND location='Idaho';
該查詢返回$ recordset。
然后使用PHP中的數據集,遍歷每條記錄,然后再次查詢數據庫,以對在同一時間段內發生在24小時內的具有相同標牌的所有記錄的收入列求和:
foreach ($recordset as $key => $value) {
$fromdate=date('Y-m-d H:i:s',strtotime($rsRentals[$key]['to_datetime']));
$todate=strtotime(date('Y-m-d H:i:s', strtotime($fromdate)) . " +24 hours");
SELECT SUM(amount) as revenue WHERE plate='$recordset[$key]['plate']'
AND location = 'Idaho' AND to_datetime >= '$fromdate' AND from_datetime < '$todate'
}
我的問題是,根據我的計算(2分鍾之內有50個總數),大約需要13-14個小時才能匯總約20000條記錄。 這太長了,我認為必須有一種使用JOIN或類似內容運行此查詢的更簡單方法,但是我的嘗試失敗了。 以上是我成功完成的唯一設置,盡管數據集有限。
有人對我可以做什么來獲得相同的結果,但查詢要更快,更有效嗎?
使用第一個查詢獲取板塊列表,
然后將其作為子查詢插入到更大的查詢中,您的板塊是您的分組依據,而外部查詢中的時間是TO_DATETIME和TO_DATETIME-24之間的位置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.