3

不是程序员,而是使用 data.stackexchange.com。我正在查询公共 SE 数据资源管理器,并且我指定的列名无效。另外,如何指定计数(帖子)和计数(投票)?是否有人查询 data.se 并知道 db 模式能够帮助我更正此代码?

Select Count (u.Id)
From Users u 
Left Join Posts p on u.Id = p.OwnerUserId
Left join SuggestedEdits e on u.Id = e.OwnerUserId
left join Votes v on u.Id = v.UserId
WHERE ((u.CreationDate BETWEEN 'qwerty' AND 'qwerty')
AND (p.CreationDate BETWEEN 'qwerty' AND 'qwerty')
AND (p.ClosedDate is null)
OR (e.CreationDate BETWEEN 'qwerty' AND 'qwerty'))
AND Count (Posts) = x
OR Count (Votes) = y
Group by u.CreationDate, p.OwnerUserId, UserTypeId, u.DisplayName, p.CreationDate
4

1 回答 1

2

您是否尝试过此处的Compose Query选项。如果单击该链接,它会在侧边栏的右侧显示数据库架构。

请注意,侧边栏可以隐藏,只需单击链接即可再次显示。那是你需要的吗?

编辑

我仍然不确定您到底要做什么。如果我处于你的位置,我会首先对每个单独的表运行一些简单的查询。这样您就可以看到那里存储了哪些数据。

运行此查询并查看结果:

SELECT *
FROM Users
WHERE CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 09:00:00'

运行此查询并查看结果:

SELECT *
FROM Posts
WHERE CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 08:10:00'

运行此查询并查看结果:

SELECT *
FROM Votes
WHERE CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 08:10:00'

我不确定您为什么在联接中包含 SuggestedEdits 表,因为您似乎没有在其他任何地方使用该表。所以离开它。

现在,在看到数据的样子之后,您应该能够将它们拼凑在一起以找到您想要的东西。哪个我还不知道?希望这样的事情可以帮助您入门。此查询将返回一些结果,但我不确定它是否是您所追求的。

SELECT Count(u.Id), Count(p.Id), Count(v.Id)
FROM Users u
LEFT JOIN Posts p on u.Id = p.OwnerUserId
LEFT JOIN Votes v on u.Id = v.UserId
WHERE u.CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 09:00:00'
GROUP BY u.CreationDate, p.OwnerUserId, v.VoteTypeId, u.DisplayName, p.CreationDate
于 2012-09-27T19:40:20.323 回答