首页 > 解决方案 > 统计堆栈交换数据库中具有相同 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,而不用它自己的AnswerCount值计算匹配。

Select Count(*)
From Posts as p1
Join Posts as p2
On p2.Id = {
            Select Top 1 Id
            From p2
            Where p1.AnswerCount = p2.AnswerCount
            And p1.Id <> p2.Id
            };

这是我用作参考的 Stack Exchange 帖子:如何加入第一行

标签: sqlcountself-join

解决方案


你的逻辑是正确的,但我会在这里使用存在:

SELECT COUNT(*)
FROM Posts p1
WHERE EXISTS (SELECT 1 FROM Posts p2
              WHERE p2.Id <> p1.Id AND p2.AnswerCount = p1.AnswerCount);

用简单的英语阅读,上面的查询表示计算每个帖子记录,我们可以通过不同的值找到具有相同 AnswerCount值的不同 Id帖子记录(暗示它是不同的记录)。


推荐阅读