首页 > 解决方案 > 在用户级别检索与每个标签对应的答案总数

问题描述

我正在尝试创建一个查询,以查找与每个标签相对应的答案总数(我在 stackoverflow 中给出的)。

通过这个,我能够找到我接受的、得分的和不计分的答案的总数。

使用这个,我可以找到每个标签有多少赞成票。

我在data.StackExcange中运行了以下查询以获得所需的结果,但没有成功。

这是我的查询:

DECLARE @UserId int = ##UserId##

SELECT --TOP 20 
    TagName,
    count(a.Id) as [Accepted Answers]
from
    Posts q
  inner join
    Posts a
  on a.Id = q.AcceptedAnswerId

WHERE 
    Posts.OwnerUserId = @UserId
    a.CommunityOwnedDate is null
  and a.OwnerUserId = ##UserId##
  and q.OwnerUserId != ##UserId##
  and a.postTypeId = 2
GROUP BY TagName 

更新1:

我还必须找到与该答案相对应的问题、标题和所有其他标签的 url。

标签: sqlsql-servercount

解决方案


如果您正在为每个标签寻找COUNT()接受的答案,那么

SELECT T.TagName, COUNT(Q.Id) CntAcceptedAnswer
FROM Posts Q
JOIN PostTags PT ON Q.Id = PT.PostId
JOIN Tags T ON T.Id = PT.TagId
JOIN Posts A ON Q.AcceptedAnswerId = A.Id
WHERE A.OwnerUserId = <YourUserId>
      AND A.PostTypeId = 2
      AND Q.ClosedDate IS NULL
      AND Q.DeletionDate IS NULL
GROUP BY T.TagName;

如果您正在寻找每个标签的所有答案,那么

SELECT T.TagName, COUNT(A.Id) Cnt
FROM Posts A 
JOIN Posts Q ON Q.Id = A.ParentId
JOIN PostTags PT ON Q.Id = PT.PostId
JOIN Tags T ON T.Id = PT.TagId
WHERE A.OwnerUserId = <YourUserId>
-- You can filter closed and deleted posts here as well if needed
GROUP BY T.TagName;

更新:

为了您的更新

我还需要找到问题的 url、标题和与该答案相关的所有其他标签。

您可以将查询用作子查询并将其与Posts表连接以获取其他列。


推荐阅读