的我有这样计数独特的值之内的时间范围
Time | user_id
12100 | 23
12100 | 23
12100 | 22
12100 | 19
12100 | 20
...
12160 | 273
12160 | 223
12160 | 1223
...
时间的表是秒。我正在寻找一种方式来获得独特的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]
你尝试过什么吗? – 2013-02-17 00:46:41
是的,我做到了。我每秒做一次,并将它们组合在一起以获得一分钟的总计数,但我忘记了可能存在user_id重叠。 – Firyn 2013-02-17 00:48:20
发布查询你试过了什么。 – 2013-02-17 00:49:37