计算堆栈交换数据库中具有相同AnswerCount值的单个匹配记录的数量

问题描述

我正在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当前也会失败,并显示此错误消息。