问题描述
我正在https://data.stackexchange.com/stackoverflow/query/new处查询Stack Exchange数据库
计算与另一个帖子具有相同AnswerCount
值的帖子总数。
这是我的尝试,导致错误Something unexpected went wrong while running your query. Don't worry,blame is already being assigned.
想法是在Posts
表中的帖子/记录与另一帖子/记录的AnswerCount
值具有单个匹配项之后增加计数器,而不用自己的{值{1}}。
AnswerCount
这是我用作参考的Stack Exchange帖子:How to Join to first row
解决方法
您的逻辑是正确的,但是我会在这里使用它存在:
SELECT COUNT(*)
FROM Posts p1
WHERE EXISTS (SELECT 1 FROM Posts p2
WHERE p2.Id <> p1.Id AND p2.AnswerCount = p1.AnswerCount);
用简单的英语阅读,上面的查询说要对每条帖子记录进行计数,我们可以为它们找到不同的帖子记录,它们的值相同 AnswerCount
,相差 em> Id
值(表示它是不同的记录)。
计算与另一个帖子具有相同AnswerCountvalue的帖子总数。
您的逻辑很复杂。答案计数与当前行相同的其他行数与该答案计数减去1的行数完全相同。只有计数等于1时,才没有其他答案,因此:
select sum(cnt)
from
( -- count per AnswerCount
Select AnswerCount,Count(*) as cnt
From Posts
group by AnswerCount
having count(*) > 1 -- remove unique AnswerCount
) as dt
或添加更多详细信息:
select sum(cnt) as answers,sum(case when cnt > 1 then cnt end) as same_AnswerCount_as others,sum(case when cnt = 1 then cnt end) as Unique_AnswerCount,max(AnswerCount)
from
(
Select AnswerCount,Count(*) as cnt
From Posts
group by AnswerCount
) as dt
顺便说一句,即使是最简单的查询,Data Explorer当前也会失败,并显示此错误消息。