パフォーマンス上の理由から、日ごとに合計されたデータの具体化されたビューを作成する必要があります。タイムスタンプは UNIX タイムスタンプとして保存されます。
マテリアライズド ビューのテーブルへの更新 (REPLACEing) を許可するには、1 日の開始 (または終了) に一致する UNIX タイムスタンプ形式のタイムスタンプが必要です。そのタイムスタンプは、テーブルのキーの一部になります。ベーステーブルのデータが変更されるたびに、その特定の日にのみビューのテーブルを更新できます (これもパフォーマンスのためです)。
現在の集計ステートメントは次のようになります。
REPLACE INTO aggregate_data (channel_id, type, timestamp, value)
SELECT channel_id, 'day' AS type, MAX(timestamp) AS timestamp, SUM(value) AS value
FROM data
GROUP BY channel_id, YEAR(FROM_UNIXTIME(timestamp/1000)), DAYOFYEAR(FROM_UNIXTIME(timestamp/1000));
最後に集計されたデータのタイムスタンプではなく、MAX(timestamp) をその日の境界 (24:00) に一致させるにはどうすればよいですか?