使用Stack Exchange Data Explorer我试图弄清楚有多少不同的用户在2012年10月19日到2012年11月9日之间提出了问题。我已经得到了我的疑问:
SELECT Count(*)
FROM Posts
WHERE (CreationDate BETWEEN '2012-10-19' AND '2012-11-09') AND PostTypeId = 1
GROUP BY OwnerUserId
但是,这会在超级用户上返回3,071行(我不会在Stack Overflow上尝试它)。这似乎太高了。我错过了什么吗?
答案 0 :(得分:8)
如果您只想简单了解不同的用户,可以使用DISTINCT
关键字,如下所示:
SELECT Count(DISTINCT OwnerUserID)
FROM Posts
WHERE (CreationDate BETWEEN '2012-10-19' AND '2012-11-09') AND PostTypeId = 1
distinct关键字将确保您只计算每个OwnerUserID一次 - 原始问题将只返回每个不同用户提出的问题数量(如果没有其他上下文,则相当无用)。
实际上,此查询返回原始查询中返回的行数。
答案 1 :(得分:2)
有问题的SQL返回每个组的计数 - group by告诉SQL为每个组输出一行,这不是我想要的(我理解)。您需要单独计算不同的用户ID
select count(distinct OwnerUserId)
from Posts
WHERE (CreationDate BETWEEN '2012-10-19' AND '2012-11-09') AND PostTypeId = 1
答案 2 :(得分:2)
如果你想要的只是不同用户的总数,那么你可以使用distnct
关键字作为Count
的一部分,然后省略{{1 }}
例如
GROUP BY