我正在 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;
是的,您可以使用
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 的架构文档在这里。