每15分钟获得一次平均数据

时间:2011-11-11 15:51:26

标签: mysql sql aggregate-functions

我是tsql的新手并使用mysql db。查看示例代码(如下所示),每2小时从数据库中获取数据:

SELECT date(`dateTime`) dateDay, 2*floor(date_format(`dateTime`,'%H')/2) dateHour,
       avg(channel1), avg(channel2), avg(channel3)
FROM `Table`
WHERE `id` =1
AND `dateTime` >= '2011-10-15 00:00:01'
AND `dateTime` <= '2011-10-17 23:59:59'

然后我根据上面的代码做了一些更改,每15分钟获取一次数据:

SELECT date(`dateTime`) dateDay, 15*floor(date_format(`dateTime`,'%i')/15) dateHour,
       avg(channel1), avg(channel2), avg(channel3)
FROM `Table`
WHERE `id` =1
AND `dateTime` >= '2011-10-15 00:00:01'
AND `dateTime` <= '2011-10-17 23:59:59'

group by date(`dateTime`), 15*floor(date_format(`dateTime`,'%i')/15)

但是查询不正确。

我的问题是:

  1. 如何修改查询以每15分钟获取一次数据?
  2. 如何编写sql查询以获取所有数据?和dateDay和dateHour列需要在这里。

1 个答案:

答案 0 :(得分:0)

1:每15分钟一次:

选择日期(dateTime)dateDay,2 * floor(date_format(dateTime,&#39;%H&#39;)/ 2)dateHour,        avg(channel1),avg(channel2),avg(channel3)

- &GT;

SELECT date(`dateTime`) dateDay
     ,CONCAT( 2*floor(date_format(`dateTime`,'%H')/2), ':', 15*FLOOR(DATE_FORMAT(`dateTime`, '%i')/15)) dateQuarter
     ,avg(channel1), avg(channel2), avg(channel3)
  FROM `Table`
    WHERE `id` =1
    AND `dateTime` >= '2011-10-15 00:00:01'
    AND `dateTime` <= '2011-10-17 23:59:59'
  GROUP BY 1,2;

2:所有数据。我不太确定你想要什么。但这里的每一行都是小时:分钟在dateHour字段。

SELECT date(`dateTime`) dateDay, 
       ,DATE_FORMAT(`dateTime`, '%H:%i') dateHour,
 FROM `Table`
 WHERE `id` =1
    AND `dateTime` >= '2011-10-15 00:00:01'
    AND `dateTime` <= '2011-10-17 23:59:59'