我想根據時間間隔從mysql數據庫中聚合一個屬性。下面是我的一些示例數據的數據結構:按時間彙總
事件表
+----+---------------------+---------------------+
| id | start | end |
+----+---------------------+---------------------+
| 1 | 2017-01-22 14:00:00 | 2017-01-22 17:00:00 |
| 2 | 2017-01-22 15:00:00 | 2017-01-22 18:00:00 |
+----+---------------------+---------------------+
預訂表
+----+----------+--------------+--------+
| id | event_id | person_count | status |
+----+----------+--------------+--------+
| 1 | 1 | 5 | 1 |
| 2 | 1 | 4 | 1 |
| 3 | 1 | 6 | 1 |
| 4 | 2 | 3 | 1 |
| 5 | 2 | 4 | 1 |
| 6 | 2 | 5 | 0 |
+----+----------+--------------+--------+
我正在尋找一種方法來找出有多少人( SUM的bookings.person_count)在預訂狀態爲1的15分鐘時間間隔內參加事件。因此,查詢的輸出應該如下所示:
+---------------------+--------------------+
| date | person_count_total |
+---------------------+--------------------+
| 2017-01-22 14:00:00 | 15 |
| 2017-01-22 14:15:00 | 15 |
| 2017-01-22 14:30:00 | 15 |
| 2017-01-22 14:45:00 | 15 |
| 2017-01-22 15:00:00 | 22 |
| 2017-01-22 15:15:00 | 22 |
| 2017-01-22 15:30:00 | 22 |
| 2017-01-22 15:45:00 | 22 |
| 2017-01-22 16:00:00 | 22 |
| 2017-01-22 16:15:00 | 22 |
| 2017-01-22 16:30:00 | 22 |
| 2017-01-22 16:45:00 | 22 |
| 2017-01-22 17:00:00 | 22 |
| 2017-01-22 17:15:00 | 7 |
| 2017-01-22 17:30:00 | 7 |
| 2017-01-22 17:45:00 | 7 |
| 2017-01-22 18:00:00 | 7 |
+---------------------+--------------------+
有什麼辦法可以在mysql中實現這個嗎?當前的解決方案在php應用程序的第一次啓動和最後一次結束之間的所有15分鐘間隔內循環。但是,由於這會產生很多數據點,並且性能不佳,因爲每個數據點意味着一個查詢。
「這會創建大量的數據點」。 。 。你不想要所有數據點的數據嗎?你如何避免這種情況? –
我的意思是通過php腳本創建數據的成本很高。因爲每個數據點意味着一個查詢。 – lasagne
你在17:00總結不正確,應該是22.因爲1和2都出現在那個時候@lasagne – GurV