私はこれに刺し傷がありました。本当に他の人がそれを解決する方法を知りたいと思っています。
これまでと同じような問題がありましたが、タイムインデックステーブルを作成し、時間枠に合わせて時間を書き直してデータテーブルを結合することで解決しました。問題は、新しい時間インデックステーブルが必要であり、時間間隔ごとに個別のクエリまたはビューが必要なことです。
このようにデータを結合することの利点は、読書や結果がなかった時間枠にも興味があったため、特定の時間枠ではヌルまたは読み取り値を確認する必要がありました。そのための最後のデータでは少し余分な作業が必要です(つまり、プレースホルダを取り出す)。
私がした最初のものは、時間インデックステーブルを作成し、それは次のようになります....
mysql> select * from ctb_time_idx WHERE YEAR(ctb_datetime) = 2013 LIMIT 10 ;
+---------------------+
| ctb_datetime |
+---------------------+
| 2013-01-01 00:00:00 |
| 2013-01-01 00:15:00 |
| 2013-01-01 00:30:00 |
| 2013-01-01 00:45:00 |
| 2013-01-01 01:00:00 |
| 2013-01-01 01:15:00 |
| 2013-01-01 01:30:00 |
| 2013-01-01 01:45:00 |
| 2013-01-01 02:00:00 |
| 2013-01-01 02:15:00 |
+---------------------+
10 rows in set (0.07 sec)
私はその後、労働組合
(select
ctb_datetime AS time1 ,
'Placeholder' AS TimeInterval ,
NULL AS `Col A` ,
NULL AS `Col B`
from my_time_idx
where YEAR (ctb_time_idx.ctb_datetime ) = 2013)
UNION
(select DATE_FORMAT(time1 , '%Y-%m-%d %H:00') AS time1 ,
'00min' AS TimeInterval , `Col A` , `Col B` from my_data_table
where MINUTE(time1) BETWEEN 00 AND 14 )
UNION
(select DATE_FORMAT(time1 , '%Y-%m-%d %H:15') AS time1 ,
'15min' AS TimeInterval, `Col A` , `Col B` from my_data_table
where MINUTE(time1) BETWEEN 15 AND 29 )
UNION
(select DATE_FORMAT(time1 , '%Y-%m-%d %H:30') AS time1 ,
'30min' AS TimeInterval, `Col A` , `Col B` from my_data_table
where MINUTE(time1) BETWEEN 30 AND 44 )
UNION
(select DATE_FORMAT(time1 , '%Y-%m-%d %H:45') AS time1 ,
'45min' AS TimeInterval, `Col A` , `Col B` from my_data_table
where MINUTE(time1) BETWEEN 45 AND 59 )
order by time1
の私のデータは、私はこれを上のテスト私の古いテーブルとそれは正常に動作するようだ、私はあなたの例に合うように私のコードを編集する必要があったので、うまくいけば、それを行うときにそれを台無しにしていない。
が重複する可能性を[ SQLのtimeseriesをサンプリングする](http://stackoverflow.com/questions/7335627/sampling-sql-timeseries) – Domi