このようなテーブルがあります
Time | user_id
12100 | 23
12100 | 23
12100 | 22
12100 | 19
12100 | 20
...
12160 | 273
12160 | 223
12160 | 1223
...
時間は秒単位です。1分以内に一意のuser_idの数を取得し、結果テーブルを次のようにする方法を探しています
Minute | Count
1 | 36
2 | 100
...
12100 から始まるとすると、1 分目は から12100 ~ 12159
、2 分目は から12160 to 12219
です。
助けていただければ幸いです。
更新:(これは私が試したものですが、カウントに重複が含まれているようです)
SELECT ROW_NUMBER() OVER (ORDER BY [Time]) AS [Row]
, [Time]
, COUNT(DISTINCT([user_id])) as [Count]
INTO [table].[dbo].[temp]
FROM [db].[dbo].[table]
GROUP BY [Time]
SELECT t.[Minute], SUM(t.[Count]) AS [Count]
FROM
(SELECT (ROW_NUMBER() OVER (ORDER BY [Row]) + 59)/60 AS [Minute]
, SUM([Count]) AS [Count]
FROM [db].[dbo].[temp]
GROUP BY [Row]) AS t
GROUP BY t.[Minute]
ORDER BY t.[Minute]
DROP TABLE [db].[dbo].[temp]