使用 Stack Exchange Data Explorer (SEDE) 访问问题和答案的单独赞成票和反对票计数

问题描述 投票:0回答:1

我正在 Stack Overflow 上对特定标签内的用户参与度和满意度进行研究。我正在利用 Stack Exchange Data Explorer (SEDE) 来提取数据,特别是用户对问题和答案的投票模式。

虽然我可以使用 SEDE 访问问题和答案的净投票分数,但我有兴趣获取更详细的信息,特别是问题和答案的赞成票和反对票的单独计数。这种粒度级别将提供对用户交互和情绪的更深入的洞察。

有没有办法使用 SEDE 查询检索问题和答案的单独赞成票和反对票计数?如果是这样,您能否提供指导或为我指明如何修改我的查询以访问此信息的正确方向?

任何有关此事的帮助或见解将不胜感激。谢谢!

我探索了 SEDE 来分析 Stack Overflow 上特定标签的用户参与度。我一直无法找到一种方法来使用现有查询访问问题和答案的单独赞成票和反对票计数。我正在寻求有关如何修改查询或访问此数据的指导,以更深入地了解用户交互。谢谢!

这是我的 SQL 代码:

SELECT
    Q.*,
    A.*,
    U.*  -- User information for all answers
FROM
    (SELECT *
    FROM Posts
    WHERE Tags LIKE '%google-maps-api-3%'
        OR Tags LIKE '%google-maps-api-3%'
        AND PostTypeId = 1
        AND AcceptedAnswerId IS NOT NULL) AS Q
JOIN
    Posts AS A ON Q.Id = A.ParentId
JOIN
    Users AS U ON A.OwnerUserId = U.Id;
sql data-analysis data-exchange
1个回答
0
投票

是的,您可以使用

Votes
表。您需要在加入之前预先聚合它。
APPLY
是最简单的方法。

  • 子查询是不必要的
  • 由于逻辑优先级,您的
    AND
    OR
    逻辑几乎肯定是错误的,并且需要括号。
WITH PostsWithVotes AS (
    SELECT
      p.*,
      v.*
    FROM Posts AS p
    CROSS APPLY (
        SELECT
          COUNT(CASE WHEN v.VoteTypeId = 2 THEN 1 END) AS UpvoteCount,
          COUNT(CASE WHEN v.VoteTypeId = 3 THEN 1 END) AS DownvoteCount
        FROM Votes v
        WHERE v.PostId = p.Id
    ) v
)
SELECT
    Q.*,
    A.*,
    U.*  -- User information for all answers
FROM PostsWithVotes AS Q
JOIN
    PostsWithVotes AS A ON Q.Id = A.ParentId
JOIN
    Users AS U ON A.OwnerUserId = U.Id
WHERE (Q.Tags LIKE '%google-maps-api-3%'
       OR Q.Tags LIKE '%google-maps-api-3%')
  AND Q.PostTypeId = 1
  AND Q.AcceptedAnswerId IS NOT NULL;

SEDE 的架构文档在这里

© www.soinside.com 2019 - 2024. All rights reserved.