Sql 如何将三个计数查询合并为一个
我如何使用不同的反应(Sql 如何将三个计数查询合并为一个,sql,database,count,Sql,Database,Count,我如何使用不同的反应(不喜欢,查看)将这样一个查询与其他两个查询组合起来,以便通过一个查询收集统计数据 SELECT COUNT(DISTINCT user_id) FROM reactions WHERE post_id = $1 AND reaction 'like'; 使用条件聚合: SELECT user_id, COUNT(DISTINCT CASE WHEN reaction = 'like' THEN 1 END) AS like_cnt,
不喜欢
,查看
)将这样一个查询与其他两个查询组合起来,以便通过一个查询收集统计数据
SELECT COUNT(DISTINCT user_id) FROM reactions
WHERE post_id = $1 AND reaction 'like';
使用条件聚合:
SELECT
user_id,
COUNT(DISTINCT CASE WHEN reaction = 'like' THEN 1 END) AS like_cnt,
COUNT(DISTINCT CASE WHEN reaction = 'dislike' THEN 1 END) AS dislike_cnt,
COUNT(DISTINCT CASE WHEN reaction = 'viewed' THEN 1 END) AS viewed_cnt
FROM reactions
WHERE post_id = $1
GROUP BY user_id;
从您的问题中不完全清楚您是想要单个用户还是整个表的这些统计数据。如果是后者,则我们可以按
用户id
进行聚合,并为每个用户生成这些统计信息。使用条件聚合:
SELECT
user_id,
COUNT(DISTINCT CASE WHEN reaction = 'like' THEN 1 END) AS like_cnt,
COUNT(DISTINCT CASE WHEN reaction = 'dislike' THEN 1 END) AS dislike_cnt,
COUNT(DISTINCT CASE WHEN reaction = 'viewed' THEN 1 END) AS viewed_cnt
FROM reactions
WHERE post_id = $1
GROUP BY user_id;
从您的问题中不完全清楚您是想要单个用户还是整个表的这些统计数据。如果是后者,那么我们可以通过用户id
进行聚合,并为每个用户生成这些统计信息。我认为如下:
SELECT reaction,count(DISTINCT user_id) FROM reactions
WHERE post_id=$1 AND reaction in ('like','dislike','viewed')
GROUP BY reaction
我觉得像这个,
SELECT reaction,count(DISTINCT user_id) FROM reactions
WHERE post_id=$1 AND reaction in ('like','dislike','viewed')
GROUP BY reaction
对不起,整张桌子。问题是,我需要解决重复条目的问题。一个用户对一篇帖子的反应可能是一次又一次的相同,但它应该只算作一个条目,这就是为什么我认为它是不同的necessary@Mahoni您从未告诉我们您正在使用哪个数据库,但请尝试执行
COUNT(不同情况下…
抱歉,整张桌子。问题是,我需要解决重复条目的问题。一个用户对一篇帖子的反应可能是一次又一次的相同,但它应该只算作一个条目,这就是为什么我认为它是不同的necessary@Mahoni您从未告诉我们您使用的是哪个数据库,但请尝试执行COUNT(不同的情况下…