如果这是不正确的位置,我道歉 - 请移动它,如果是这样的话!我一直在尝试过去几个小时来提出一个返回以下信息的查询:
过去三个完成月份(2012年4月,2012年5月,2012年6月)每个“前5名”标签的问题数和答案数。
根据我发现的其他查询,我得到了this far:
SELECT *, COUNT(*) AS Count FROM
(
SELECT CAST(
CAST(DATEPART(YYYY, CreationDate) AS varchar) + '-' + CAST(DATEPART(MM, CreationDate) AS varchar) + '-01'
AS DATETIME) [Month],
t.TagName
FROM Posts p
JOIN PostTags pt ON pt.PostId = p.Id
JOIN Tags t ON t.Id = pt.TagId
WHERE TagId IN
(
SELECT TOP 5 Id FROM Tags
ORDER BY Count DESC
)
) AS X
WHERE [Month] >= CAST('2012-04-01' as datetime)
AND [Month] < CAST('2012-07-01' as datetime)
GROUP BY TagName, [Month]
ORDER BY [Month] ASC, TagName ASC
问题是JOIN会删除没有关联PostTag的记录。我对SQL不是很熟练,所以这给我带来了一些问题。相关信息:
如果有人可以提供帮助,我会非常感激。
感谢。
答案 0 :(得分:1)
五个月后,我认为这样做符合你的要求:
http://data.stackexchange.com/stackoverflow/query/89629/questions-per-tag-top-five-by-month
提供答案的计数会使查询复杂化,但我认为上面的查询会将问题和答案分配到适当的月份和标签中。