簡體   English   中英

如何在24小時內從MySQL中選擇列的匯總范圍?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM