MySQLにて、1秒毎にメモリ使用率が記録されていくテーブルを想定し、これを5分ずつや1時間ずつの適当な単位で平均した上でn件取得するということを行いたいのですが、より良い方法は何でしょうか?
- 例として、レコードが120件の場合、2時間分のデータが分単位で記録されています
- 単位が5分毎で取得件数が10の場合、50件のレコードを5件毎に平均して10件取得したいということです
- カラムはオートインクリメントされるidと日付型と、メモリ使用率のみですが、増やすこともできます
- サーバースクリプトから叩くので、クエリは動的に何行でも生成できます
過去に1時間毎の取得を以下のクエリで試みましたが、ONLY_FULL_GROUP_BYの警告が出るため止めました。
MySQL
1select avg(used_memory) from table group by date_format(created_at, '%Y%m%d%H');
最悪は力技ですが、以下文のbetween句を書き換えつつ、n回繰り返し取得するという方式にしようかと考えています。(1時間毎の例)
MySQL
1select avg(used_memory) from table where created_at between '2018-05-15 00:00:00' AND '2018-05-15 00:59:59';
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/15 04:42