SQL查询左连接后全部计数

时间:2019-05-08 09:30:53

标签: sql postgresql

我有一个包含用户的表格,一个包含新闻文章的表格和一个表示用户X喜欢/不喜欢文章Y的反应的表格。我现在拥有的查询(工作正常)选择所有文章并返回相似状态每篇文章上特定用户的点击次数(如果用户既未喜欢又不喜欢,则为null)。我正在尝试修改此查询,以便它也可以统计文章的喜欢总数,而不仅仅是特定用户。

当前查询:

 SELECT R.articleID, N.title, N.content, COALESCE (R.state, 'none') AS state
 FROM News N
 LEFT JOIN Reaction R on N.ID = R.articleid and R.personid = 1;

此外,您还可以找到所有表和字段here

2 个答案:

答案 0 :(得分:0)

您将需要为此执行子查询。我想它看起来像这样:

 SELECT R.articleID, N.title, N.content, COALESCE (R.state, 'none') AS state,
(SELECT COUNT(1) FROM News INNER JOIN Reaction on News.ID = Reaction.articleid where News.id=N.id) as TotalCount
 FROM News N
 LEFT JOIN Reaction R on N.ID = R.articleid and R.personid = 1;

答案 1 :(得分:0)

我建议聚合:

FILTER

请注意,CASE是表示条件聚合的标准SQL的一部分-Postgres支持此语法。可以用等效的{{1}}构造代替。