【问题标题】:How to extract the accepted and the top voted answer of a question from SEDE?如何从 SEDE 中提取问题的接受和投票最多的答案?
【发布时间】:2019-10-29 17:18:45
【问题描述】:

我正在编写一个查询以使用以下查询从 Stack Overflow Stack Exchange Data Explorer 中提取问题和答案:

SELECT Top 2 
q.id, q.Title, q.Body q_body, q.parentid qpid, q.AcceptedAnswerId, q.Score q_score, q.AnswerCount, q.Tags, q.viewcount,

answers.parentid aa_pid, answers.id aa_id,
answers.body aa_body, answers.score as aa_score, answers.posttypeid 

FROM 
  Posts answers

INNER JOIN Posts q 
  ON answers.parentid = q.id

WHERE (answers.id = q.AcceptedAnswerId) AND q.AnswerCount > 2

但是,除了接受的答案,我还想提取投票最多的答案。因为,我什至不明白为什么 answers 不是表格。

【问题讨论】:

标签: sql stackexchange-api


【解决方案1】:

Here's我提出的一个查询,你可以看到它:

SELECT Id AS [Post Link], Body, Score
FROM (
    SELECT TOP 1 Id, Body, Score, DENSE_RANK() OVER(ORDER BY Score DESC) Rank 
    FROM (
        SELECT p.Id, p.ParentId, p.Body, p.Score
        FROM Posts p 
        WHERE p.ParentId = ##QuestionId##
    )x
    ORDER BY Rank ASC
)x

UNION
SELECT * 
FROM (
    SELECT Id, Body, Score
    FROM (
        SELECT a.Id, a.ParentId, a.Body, a.Score FROM Posts a 
        WHERE a.ParentId = ##QuestionId##
    )x
)x 
WHERE (SELECT b.AcceptedAnswerId FROM Posts b WHERE b.id = ##QuestionId##) = id

第一部分找到票数最高的答案,而第二部分搜索接受的答案(如果有的话)。

两者都有点复杂,因为Posts 表既是关于答案的,也是关于问题的。这就是嵌套两个FROMs的原因。

【讨论】:

    猜你喜欢
    • 2017-11-26
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多