0

いくつか (現在は 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  |
+-------------------+-------------+-------+------------------------+

移動平均を計算するためにいくつかの作業を行いましたが、それは特定の時間枠と特定の間隔数に対するものです。これにより、ユーザーが日付範囲と指定された間隔数を選択し、結果をグラフ化できるようにしたいと考えています。

4

1 に答える 1