You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JOIN与COUNT函数结合,统计博客的点赞与点踩数量?

博客点赞与点踩统计的SQL实现

要查询所有博客并同时展示点赞、点踩总数,核心是用LEFT JOIN关联两张表,再结合条件聚合函数区分两类统计,具体实现如下:

方案一:使用COUNT + CASE WHEN

SELECT 
    b.id,
    b.article,
    COUNT(CASE WHEN be.is_like = TRUE THEN 1 END) AS like_count,
    COUNT(CASE WHEN be.is_like = FALSE THEN 1 END) AS dislike_count
FROM blogs b
LEFT JOIN blog_eval be ON b.id = be.blog_id
GROUP BY b.id, b.article;

关键逻辑说明:

  • LEFT JOIN:保证即使没有任何评价的博客也会被纳入结果,这类博客的点赞/点踩数会显示为0
  • CASE WHEN:精准筛选出点赞(is_like=TRUE)或点踩(is_like=FALSE)的记录,不满足条件时返回NULL
  • COUNT:自动忽略NULL值,只统计符合条件的有效评价数量
  • GROUP BY:按博客的id和article分组,确保每个博客只返回一条统计结果

方案二:使用SUM + CASE WHEN

如果更习惯用累加的方式统计,也可以用SUM替代COUNT:

SELECT 
    b.id,
    b.article,
    SUM(CASE WHEN be.is_like = TRUE THEN 1 ELSE 0 END) AS like_count,
    SUM(CASE WHEN be.is_like = FALSE THEN 1 ELSE 0 END) AS dislike_count
FROM blogs b
LEFT JOIN blog_eval be ON b.id = be.blog_id
GROUP BY b.id, b.article;

逻辑说明:

  • 符合点赞/点踩条件时返回1,否则返回0
  • SUM将这些数值累加,得到最终的统计总数,效果和方案一完全一致

内容的提问来源于stack exchange,提问作者malbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:40:31