【发布时间】:2017-10-31 13:42:57
【问题描述】:
我正在尝试编写一个 SQL 查询,该查询必须返回每分钟在过去 10 分钟内进行了多少事务。喜欢:
1 分钟前:2 笔交易
2 分钟前:1 笔交易
...
9 分钟前:3 笔交易
10 分钟前:4 笔交易
我试图做这个查询:
DECLARE @N int = 10;
DECLARE @NOW DATETIME = GETDATE();
WITH numbers( num ) AS (
SELECT 1 UNION ALL
SELECT 1 + num FROM numbers WHERE num < @N )
SELECT num AS minute,
(
SELECT COUNT(*) AS RESULTS
FROM [ApiTransactions]
WHERE [DateUtc] > DATEADD(year, -1, @NOW)
GROUP BY DATEPART(minute, DATEADD(minute, -num, @NOW))
)
FROM numbers;
我仍然不知道逻辑是否正确。我所知道的是我收到了错误:
每个 GROUP BY 表达式必须至少包含一个不是外部引用的列。
为什么会出现这个错误?有没有更好的查询方法?
【问题讨论】:
标签: sql sql-server datetime group-by