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

たとえば、11:10の赤い部屋の人数を合計すると、約117になるように、10分間隔で部屋にいる平均人数を見つけるにはどうすればよいですか。

これを行う方法はいくつか知っていますが、すべて新しいテーブルを作成する必要があります。新しいテーブルを作成せずにこれを行うにはどうすればよいですか?無関係なデータを削除したいだけです。

4

2 に答える 2

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 に答える
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

これを試してください。必要に応じて、2つの日時変数を使用し、1つに10分を追加できます。between句の変数を使用します。

お役に立てれば。

于 2012-07-13T18:28:27.903 に答える