2011-11-11 9 views
0

私はtsqlを初めて使用しており、mysql dbを使用しています。データベースからのデータごとに2時間を取得する(下記の)コード例を見て:しかし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) 

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分を取得するために、上記のコードに基づいていくつかの変更を行いましたクエリが正しくありません。

私の質問は以下のとおりです。

  1. どのように15分毎にデータを取得するクエリを修正しますか?
  2. どのようにすべてのデータを取得するSQLクエリを記述するのですか? dateDayとdateHour列はここにある必要があります。
+0

[15分間隔によってグループMySQLのクエリ](http://stackoverflow.com/questions/2793994/group-mysql-query-by-15-min-intervals)の可能重複 –

答えて

0

1:15分ごとに:

SELECT日付(dateTime)dateDay、2 *床(DATE_FORMAT(dateTime、 '%のH')/ 2)dateHour、 平均(チャネル1)、平均(チャネル2 )、平均(channel3)

- >

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:全てのデータ。私は本当にあなたが望んでいたか分からなかった。ここでは時間単位のすべての行が表示されます:分in 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' 
関連する問題