0

SQLServerに3つの列を含むデータテーブルがあります。1番目はDateTimeで、2番目と3番目は両方ともfloatです。特定の時間間隔、つまり15分ごとの列2と列3の差の平均を計算しようとしています。

私はなんとか次の例を見つけることができました

SELECT * FROM dbo.data
WHERE CAST(DateTime AS TIME) BETWEEN '14:00' and '14:30'

しかし、上記のクエリの結果から2番目と3番目の列の差を計算する方法がわかりません。誰かがc#でこれを実行することがより適切であると信じない限り、私はt-sqlでこれを行うことを好みます。

ありがとう

編集

2010-01-04 14:30:00.0000000 1.44377 1.44386
2010-01-04 14:30:00.0000000 1.4438  1.44389
2010-01-04 14:30:00.0000000 1.44377 1.44386
2010-01-05 14:00:01.0000000 1.44258 1.44267

結果IDは次のようになります

0.00009  ie 1.44386 - 1.44377
0.00009     1.44389 - 1.4438
0.00009     1.44386 - 1.44377
0.00009     1.44267 - 1.44258
4

1 に答える 1

1

複数の日付が表示されるため、日付列をキャストするだけの場合TIME、これはあなたの意図ではないと思います(以下の最初のクエリの結果を参照して、私が何を意味するかを説明してください)

DECLARE @Date DATETIME
SELECT @Date = '05/15/2012 14:15'
SELECT CAST(@Date AS TIME)
SELECT @Date = '04/15/2012 14:15'
SELECT CAST(@Date AS TIME)

必要なクエリは次のとおりです。

SELECT
    DATEADD(MINUTE, 15 * (DATEDIFF(MINUTE, 0, [Date]) / 15), 0), -- Assuming [Date] is the DATETIME column, this will give you 15 minute intervals
    AVG([Col2] - [Col3])
FROM
    dbo.data
GROUP BY
    DATEADD(MINUTE, 15 * (DATEDIFF(MINUTE, 0, [Date]) / 15), 0)

WHERE特定の時間枠を検索する場合は、句に強制的に追加します。

SELECT
    AVG([Col2] - [Col3])
FROM
    dbo.data
WHERE
    [Date] BETWEEN '05/15/2012 14:00' AND '05/15/2012 14:30'
于 2012-05-15T16:40:31.920 に答える