いくつか (現在は 48) の異なるデータ ポイントから 15 秒ごとにデータをサンプリングするアプリケーションがあります。これらのデータ ポイントは、2 つの異なる外部キー (MeasurementTypeId および GeneratorId)、サンプル値 (Value) および日時 (MeasurementDate) によって表に表されます。
したがって、テーブルは次のようになります (10 行のみを含め、いくつかの異なる外部キーの組み合わせのみを含めています)
+------+-------------------+-------------+-------+------------------------+
| ID | MeasurementTypeId | GeneratorId | Value | MeasurementDate |
+------+-------------------+-------------+-------+------------------------+
| 1 | PSI | SG-52 | 0.19 | 2013-08-27 09:19:30 |
| 2 | PH | SG-52 | 6.39 | 2013-08-27 09:19:30 |
| 3 | DEG | SG-52 | 90.85 | 2013-08-27 09:19:30 |
| 4 | PSI | PT-14 | 0.33 | 2013-08-27 09:19:30 |
| 5 | PH | PT-14 | 6.41 | 2013-08-27 09:19:30 |
| 6 | DEG | PT-14 | 89.20 | 2013-08-27 09:19:30 |
| 7 | PSI | SG-52 | 0.20 | 2013-08-27 09:19:45 |
| 8 | PH | SG-52 | 6.37 | 2013-08-27 09:19:45 |
| 9 | DEG | SG-52 | 90.84 | 2013-08-27 09:19:45 |
| 10 | PSI | PT-14 | 0.34 | 2013-08-27 09:19:45 |
+------+-------------------+-------------+-------+------------------------+
日時範囲の間隔の平均値 (外部キーでグループ化) を返すことができるストアド プロシージャを作成しようとしています。ただし、間隔を定義するのではなく、ストアド プロシージャを呼び出すユーザーに任せます。
ストアド プロシージャに次のパラメータを取得させたい
@numberOfIntervals int,
@startDateRange datetime,
@endDateRange datetime
そして、startDateRange と endDateRange の datediff を numberOfIntervals で割り、平均を行う間隔を決定します。
たとえば、プロシージャが 3 で呼び出された場合、'2013-08-26 00:00:00'、'2013-08-27 00:00:00'
結果は、8 時間間隔の平均に等しい値との組み合わせにより、各グループの 3 つのレコードになります (簡潔にするために 10 の結果のみが含まれます...実際の結果には 18 が含まれます)。
+-------------------+-------------+-------+------------------------+
| MeasurementTypeId | GeneratorId | Value | MeasurementDate |
+-------------------+-------------+-------+------------------------+
| PSI | SG-52 | 0.20 | 2013-08-26 08:00:00 |
| PH | SG-52 | 7.11 | 2013-08-26 08:00:00 |
| DEG | SG-52 | 90.02 | 2013-08-26 08:00:00 |
| PSI | PT-14 | 0.44 | 2013-08-26 08:00:00 |
| PH | PT-14 | 6.98 | 2013-08-26 08:00:00 |
| DEG | PT-14 | 90.31 | 2013-08-26 08:00:00 |
| PSI | SG-52 | 0.21 | 2013-08-26 16:00:00 |
| PH | SG-52 | 7.12 | 2013-08-26 16:00:00 |
| DEG | SG-52 | 90.01 | 2013-08-26 16:00:00 |
| PSI | PT-14 | 0.44 | 2013-08-26 16:00:00 |
+-------------------+-------------+-------+------------------------+
移動平均を計算するためにいくつかの作業を行いましたが、それは特定の時間枠と特定の間隔数に対するものです。これにより、ユーザーが日付範囲と指定された間隔数を選択し、結果をグラフ化できるようにしたいと考えています。