我在SQL SERVER“用法”中有一个由4列
组成的表userID, appid, licenseid, dateUsed
现在我需要查询表格,以便我可以在一个时间范围内找到有多少用户在许可证下使用了应用程序。请记住,即使用户1在1月1日和2日使用该应用程序,他们也只会在结果中计为1。即时间范围内的独特用户。
如此查询
where dateUsed > @from AND dateUsed < @dateTo
我想要回来的是一个像
这样的行表,appid,licenseid
有没有人有任何想法?我一直在玩伯爵作为子查询,然后试图总结结果,但还没有成功。
答案 0 :(得分:3)
刚刚对此进行了测试并提供了您想要的结果:
SELECT appid, licenseid, COUNT(DISTINCT userID)
FROM usage
WHERE dateUsed BETWEEN @from AND @dateTo
GROUP BY appid, licenseid
答案 1 :(得分:2)
这样的事情应该有效:
SELECT appid, licenseid, COUNT(DISTINCT userid) as DistictUsers
FROM yourTable
WHERE dateUsed BETWEEN @from AND @dateTo
GROUP BY appid, licenseid
答案 2 :(得分:0)
只需复制,粘贴并运行以查看它是否按预期工作:
SELECT appId, licenseId, COUNT(userId)
FROM usage
WHERE dateUsed > @from AND dateUsed < @dateTo
GROUP BY appId, licenseId
答案 3 :(得分:0)
您尚未在此处发布查询,但是。我建议您使用PARTITION BY为每个许可证ID生成唯一的行数。您可以使用每个单独的许可证为用户数创建子查询。 SELECT .... FROM此子查询并使用HAVING子句过滤您的首选日期/用户。也许不是最好的解释。 请发布示例查询。