假設我給出了startTime
和endTime
,並且這些間隔爲半小時。例如startTime=8:00
,endTime=12:00
所以可能的時間是8:00, 8:30, 9:00, 9:30, 10:00, 10:30, 11:00, 11:30, 12:00
按發生次數分組的時間間隔
現在我有我的動作發生的時間段行的行。每行有rowStartTime和rowEndTime。 他們是類型TIME
我試圖實現的事情是返回GROUPED結果的時間與在該特定時間發生的行數。
演示數據
name rowStarTime rowEndTime
--------------------------------
action1 6:00 10:00
action2 9:00 13:00
action3 10:00 11:30
action4 12:00 13:00
action5 11:30 15:00
預期結果
Time Action count (actions in that time, this is just comment)
---------------------------------------------------------------------
8:00 1 //1
8:30 1 //1
9:00 2 //1, 2
9:30 2 //1, 2
10:00 3 //1, 2, 3
10:30 2 //2, 3
11:00 2 //2, 3
11:30 3 //2, 3, 5
12:00 4 //2, 4, 5
我想要做的大部分在數據庫級別上(使用SQL)。它可行嗎?或者我必須得到一些PHP的幫助(我使用Doctrine DQL,但是我可以使用很多特殊的SQL函數https://github.com/orocrm/doctrine-extensions & https://github.com/beberlei/DoctrineExtensions)?
我才能夠達到這一目的rowStartTime
,而不是整個週期:
SELECT `rowStartTime` AS sclr_0, COUNT(o.id) AS sclr_1
FROM orders o
GROUP BY sclr_0
(如果只選擇startTime
和endTime
倍之間將很難,這不是核心,可以省略這個條件)