如标题中所述,我们希望获得所有帖子(包括用户,评论和建议的编辑),其中原始提问者接受他们自己的答案作为最佳答案。换句话说,所有情况下OwnerUserId for PostTypeId 1 = OwnerUserId for PostTypeId 2
。
由于我对SEDE DB
模式没有深入的了解,因此我为此感到困惑。
这是从SEDE
的示例中获得的,这些示例使用户具有很高的自我接受率(并具有> 10个答案),但我们需要的是具有自我接受的答案的帖子,而不仅仅是用户。
SELECT TOP 100
Users.Id AS [User Link],
(
CAST(COUNT(a.Id) AS float) /
CAST(
(
SELECT COUNT(*)
FROM Posts p
WHERE p.OwnerUserId = Users.Id
AND PostTypeId = 1
)
AS float
) * 100
) AS SelfAnswerPercentage
FROM Posts q
INNER JOIN Posts a ON q.AcceptedAnswerId = a.Id
INNER JOIN Users ON Users.Id = q.OwnerUserId
WHERE q.OwnerUserId = a.OwnerUserId
GROUP BY Users.Id, DisplayName
HAVING COUNT(a.Id) > 10
ORDER BY SelfAnswerPercentage DESC
答案 0 :(得分:0)
您可以发布预期的输出吗?和表的架构?
我对您的数据库架构不熟悉,但这可能是一个起点:
SELECT q.*
FROM posts q -- Get all posts
INNER JOIN posts a ON q.AcceptedAnswerId = a.Id
AND q.OwnerUserId = a.OwnerUserId AND a.PostTypeId = 2 -- Get accepted self-answers
INNER JOIN users u ON u.Id = q.OwnerUserId -- get OP's user info
WHERE q.PostTypeId = 1 -- Only get questions
我不确定您的comments
和suggested edits
的存储位置,但我想您需要进行某种group_concat()
或JSON类型的聚合才能返回该值数据,如果每个问题帖子只需要一行。