新手参加论坛。我正在尝试编写一个MS SQL查询,该查询返回过去24小时内唯一用户登录的数量。我不是SQL专家。以下是我的两个查询。第二个是第一个的扩展,我希望按日期和小时对结果进行分组。我的问题是,第二个查询返回的结果大于第一个。我错过了什么?感谢\
SELECT COUNT(DISTINCT(RESOURCE_ID)) AS 'UniqueLogonUsers'
FROM live.AUDIT_LOG WITH (NOLOCK)
WHERE AUDIT_TYPE = 0 AND AUDIT_TIME >= DateAdd(hh, -24, GETDATE())
SELECT CAST(AUDIT_TIME AS DATE) AS 'WhichDate',
DATEPART(hh, AUDIT_TIME) AS 'WhichHour',
COUNT(DISTINCT(RESOURCE_ID)) AS 'UniqueLogonUsers'
FROM live.AUDIT_LOG WITH (NOLOCK)
WHERE AUDIT_TYPE = 0 AND AUDIT_TIME >= DateAdd(hh, -24, GETDATE())
GROUP BY CAST(AUDIT_TIME AS DATE), DATEPART(hh, AUDIT_TIME)
ORDER By CAST(AUDIT_TIME AS DATE) DESC, DATEPART(hh, AUDIT_TIME) DESC
答案 0 :(得分:1)
您的第一个查询应该只返回1行 - 过去24小时内的登录次数。您的第二次休息计入每个日/小时组合的行,因此将有更多行 - 每个组合一行,以及该小时内登录的计数。
答案 1 :(得分:0)
可能是因为您正在使用GETDATE(),每次都会返回不同的值吗?您可以尝试在那里设置固定日期而不是GETDATE()吗?