0

我正在尝试为data.stackexchange.com构建一个 SQL 查询,该查询给定特定的 Stack Overflow 用户,将列出他们接受的答案数量、得分 > 0 的答案数量以及已接受 AND/OR 的答案数量得分 > 0。

这是我到目前为止的查询,它只计算接受的答案:

DECLARE @UserId int = ##UserId##

SELECT 
    Count(a.Id) AS Accepted
FROM
    Posts q
  INNER JOIN
    Posts a ON q.AcceptedAnswerId = a.Id
WHERE
    a.OwnerUserId = @UserId
  AND
    a.PostTypeId = 2

当您在我的用户 ID (2234742) 上运行它时,它会显示以下输出:

Accepted
70

我正在寻找如下输出:

Accepted     Score > 0    Accepted or Score > 0
X            X            X

要编辑我现有的查询,您可以转到我现有的 data.stackexchange.com 查询页面,然后单击查询正文下方的“fork query”。架构将显示在右侧。我是 SQL 新手,非常感谢您的帮助!

NB 请记住,这Accepted or Score > 0不仅仅是其他两列的总和,因为有重叠!

4

1 回答 1

1
SELECT 
a.id,
sum(case when a.PostTypeId = 2 then 1 end) AS Accepted,
sum(case when a.PostTypeId = someval then 1 end) AS 'score>0',
sum(case when a.PostTypeId = someval then 1 end) AS 'acceptedorscore>0'
FROM Posts q INNER JOIN
Posts a ON q.AcceptedAnswerId = a.Id
WHERE a.OwnerUserId = @UserId
group by a.id, a.PostTypeId

将 'someval' 替换为 posttype 以获得您需要的内容。您需要按 posttype 分组

于 2015-08-05T19:08:21.170 回答