0
フォルトイベントの開始( "Faults")列は、開始( "01:10:2011 12:45:59")と終了(開始の形式)を表します。私のクエリは、各イベントの平均持続時間(end-start)をとります。タイムスタンプ/月ごとのSQLグループ
タイムスタンプが上記の形式で表示されることを念頭に置いて、月単位でイベントのグループ化の平均期間を調べたいと思います。だから、私のテーブルのイベントがある場合:
A|SERVICE| END | START
1|ADSL |1/11/2011 10:00:00 |4/11/2011 10:00:00
2|ADSL |6/11/2011 12:00:00 |6/11/2011 24:00:00
3|ADSL |5/12/2011 10:00:00 |6/12/2011 10:00:00
4|ADSL |7/12/2011 12:00:00 |8/12/2011 24:00:00
のグルーピング結果(日中)11月のライン1,2 ([3days+0.5day]/2= 1.75d)
の平均期間であることが、12月の3,4の平均期間はあることでしょうあなたのデータは複数のyにまたがる場合は非常に重要ですGROUP BYで年を含む
SELECT DATENAME(month, MIN(Start)) AS [Month], DATEPART(YEAR, Start) As [Year], CONVERT(FLOAT, AVG(DATEDIFF(hour, Start,[End])))/24 AS [Days]
FROM Faults
GROUP BY DATEPART(Month, Start), DATEPART(Year, Start)
:1.25日
NOVEMBER|1.75
DECEMBER|1.25
どのSQL-DBをお使いですか? –
待って、あなたの 'タイムスタンプ'は実際の 'タイムスタンプ'タイプではなく、フォーマットされた文字列であると言っていますか?そうであれば、実際のタイプを使用してデータベースを変換するのにかかる時間に投資してください。オンザフライ変換はかなりの時間を食べるかもしれません(あなたが無効なデータから保護されていないという事実の他に... )。そして、異なるDBはタイムスタンプを別々に扱います - DB2はあなたに近似を与えることができます(例えば、あなたが何となく重い計算をしない限り)。 –