0

ID、時間、およびブール値の列を含む 100,000 行を超えるテーブルがあります。
時間列は、時間を秒単位で追跡します。
テーブルの開始から終了までの 5 分間隔ごとに Boolean = 1 のすべてのインスタンスを検索し、時間間隔ごとにカウントをグループ化するクエリが必要です。

このテーブルは 4 時間分のデータを表しているため、48 行の結果が得られるはずです。
MS SQL Server を使用しています。

いくつかのアプローチを試してみましたが、時間間隔のロジックに苦労しています。

編集:私はそれを理解しました!

SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, timestamp)/5 * 5,0), COUNT(*)  
FROM table  
WHERE isrepeat = 1  
GROUP BY by DATEADD(MINUTE, DATEDIFF(MINUTE, 0, timestamp)/5 * 5,0)  
ORDER BY by 1
4

2 に答える 2

2

これで十分です。時間間隔/5で結果ごとにグループ化できます。

select
cast(to_char(Time, 'mi') as int) / 5 * 5 || ' - ' || cast(to_char(Time, 'mi') as int) / 5 * 5 + 5 as "Interval",
count(1)
from tableName
where
Boolean = 1
group by
cast(to_char(Time, 'mi') as int) / 5
于 2012-11-02T04:49:14.743 に答える
1
select * from tableName where Time 
BETWEEN DATEADD(minute, -5, current_timestamp)
AND current_timestamp
于 2013-12-08T06:04:51.657 に答える