2017-01-25 26 views
1

1分ごとにデータを収集する監視システムがあります。 収集したデータを15分間隔で集計したいと思います。 私はこれを使用しました:(DATEPART(分、date_report)/ 15)それは動作しません 何か方法はありますか? ご迷惑をおかけして申し訳ありません。15分間隔でレコードをグループ化する(MS SQL)

私の現在のクエリは次のとおりです。

SELECT DISTINCT fio,date_report, vocheredi,PS 
FROM 
    (
    select distinct TempTable.fio,TempTable.date_report, count (distinct id) as vocheredi 
,(CASE WHEN TempTable.workgroup LIKE 'Group East' THEN 'East' 
     WHEN TempTable.workgroup LIKE 'Group west' THEN 'West' 
     WHEN TempTable.workgroup LIKE 'Group Centre' THEN 'Centre' END) as PS 

    FROM dbo.TempTable 

     WHERE 
     TempTable.fio = 'employee' 

     and (TempTable.workgroup = 'East' 
     or TempTable.workgroup = 'west' 
      or TempTable.workgroup = 'Centre') 

      GROUP BY TempTable.fio 
       ,(CASE WHEN TempTable.workgroup LIKE 'Group East' THEN 'East' 
        WHEN TempTable.workgroup LIKE 'Group west' THEN 'West' 
        WHEN TempTable.workgroup LIKE 'Group Centre' THEN 'Centre' END) 
         ,TempTable.date_report 

       ) table 
      WHERE 
     PS = (@ReportParameter2) 
    GROUP BY 
(DATEPART (minute,date_report)/15) ,fio,date_report, vocheredi,PS 
ORDER BY date_report DESC 

は、私はそれが私のような何かを示したい:

fio, date_report,vocheredi,PS 
employee, 16:15:00-16:30:00 , 19,East 

enter image description here

+1

いくつかのポインタについてはhttp://stackoverflow.com/questions/5002661/how-to-group-time-by-hour-or-by-10-minutesを参照してください –

+0

これは@ PO –

+0

[時間単位または10分単位でグループ分けする方法]の複製の可能性あり(http://stackoverflow.com/questions/5002661/how-to-group-time-by-hour-or-by-10-minutes) –

答えて

0

まず、私はあなたが欲しいもの16:15をしないでください。 00しかし16:15:00から16:29:59(またはそのようなもの)。 私はあなたの全体のスクリプトを書き換えするつもりはないが、これはこの DATEPART(分、DateReportは)% (1〜59)、この分をお届け理解するために、15分にグループ化

DATEADD(MINUTE,DATEPART(MINUTE,DateReport)%15*-1,DateReport) 

を提供しますまたはmod関数は、偶数15から何分を残すかを示します。

DATEADdはこれを減算して、開始時間を求めます。

+0

GROUP BYセクションに挿入されていますか? – AleksTr

+0

はい。これはあなたの/ 15 –

関連する問題