0

例如,我有一张桌子,上面有给定时间房间里的人数

room_color    people    time
red           100       2012-07-13 11:11:11
red           120       2012-07-13 11:14:12
red           130       2012-07-13 11:17:13
green         ... etc

如何求10分钟间隔内房间的平均人数,例如总结11:10红房间的人数为~117

我知道一些方法可以做到这一点,但这都涉及创建一个新表,我如何在不创建新表的情况下做到这一点?我只是想删除不相关的数据。

4

2 回答 2

0
Insert into room (room_color, people)
( Select color, avg(people) as people from room 
where time between '2012-07-13 11:10' and '2012-07-13 11:20'
Group by room_color )

Delete From room where time between '2012-07-13 11:10' and '2012-07-13 11:20'

-- in case of need set some time to the table
update room set time = '2012-07-13 11:10' Where time is null

试试这个,如果你愿意,你可以使用两个日期时间变量并加到一个 10 分钟。使用 between 子句中的变量。

希望这可以帮助。

于 2012-07-13T18:28:27.903 回答
0
INSERT INTO roomstats
SELECT room_color,AVG(people), '2012-07-13 11:10:00'
FROM roomstats
WHERE room_color = 'red'
    AND DATE(time) = CAST('2012-07-13' AS DATE)
    AND TIME(time) >= CAST('11:10:00' AS TIME)
    AND TIME(time) <= CAST('11:20:00' AS TIME);

无法测试这个,因为我正在我的手机上写它,在火车上。希望能帮助到你!稍后会测试。

于 2012-07-13T18:26:05.223 回答