Sql 在SEDE(堆栈交换数据资源管理器)中获取所有带有自我接受答案的帖子

Sql 在SEDE(堆栈交换数据资源管理器)中获取所有带有自我接受答案的帖子,sql,sql-server,database,dataexplorer,Sql,Sql Server,Database,Dataexplorer,如标题所述,我们希望获得所有帖子,包括用户、评论和建议编辑,其中原始提问者接受自己的答案作为最佳答案。换句话说,PostTypeId 1的OwnerUserId=PostTypeId 2的OwnerUserId的所有情况 我正在努力解决这个问题,因为我对SEDE DB模式没有深入的理解 这是SEDE的例子,它让用户有很高的自我接受率,并且有超过10个答案,但是我们需要有自我接受答案的帖子,而不仅仅是用户 SELECT TOP 100 Users.Id AS [User Link], (

如标题所述,我们希望获得所有帖子,包括用户、评论和建议编辑,其中原始提问者接受自己的答案作为最佳答案。换句话说,PostTypeId 1的OwnerUserId=PostTypeId 2的OwnerUserId的所有情况

我正在努力解决这个问题,因为我对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

你能发布你的预期输出吗?表的模式是什么

我不熟悉您的DB模式,但这可能是一个起点:

选择q* 从帖子q-获取所有帖子 内部联接在q.AcceptedAnswerId=a.Id上发布a q.OwnerUserId=a.OwnerUserId和a.PostTypeId=2——获得公认的自我回答 内部加入用户u ON u.Id=q.OwnerUserId-获取OP的用户信息 其中q.PostTypeId=1-仅获取问题
我不确定您的评论和建议编辑存储在哪里,但我猜如果您只希望每个问题帖子有一行,您将需要进行某种类型的group_concat或JSON类型的聚合来返回该数据。

如果您真的想得到:a此类问题的所有答案,b问题及其答案的所有评论,c所有这些帖子的所有建议编辑,d所有上述帖子的用户名;然后,您将超时SEDE,并在获得该数据的一小部分之前快速达到50K行限制。你最好的选择是下载数据转储,然后去镇上看看。谢谢你的评论。从今天开始,我们只需要最新的10k记录。你能想出一个SQL代码来做到这一点吗@感谢你提供代码。我想他们没有一个具体的模式。但这里是查询它的文档:谢谢,这很有帮助。我更新了我的回复。您希望您的输出看起来如何-每篇文章一行包含摘要评论/编辑数据?或者您想要多个结果集-一个用于帖子、评论和建议编辑?