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

MySQL多表关联分组:按国家统计各类型帖子数量问题

解决方案:按国家分组统计各类型帖子数量

你需要用条件聚合来实现每个帖子类型的单独计数,也就是结合SUM()和CASE WHEN语句,针对每个类型做判断累加。同时记得用LEFT JOIN关联两张表,这样即使某个国家没有任何帖子,也会被保留并显示0值。

完整的查询语句如下:

SELECT 
    u.country,
    SUM(CASE WHEN p.type = 'Social' THEN 1 ELSE 0 END) AS social_count,
    SUM(CASE WHEN p.type = 'Economic' THEN 1 ELSE 0 END) AS economic_count,
    SUM(CASE WHEN p.type = 'Culture' THEN 1 ELSE 0 END) AS culture_count
FROM 
    User u
LEFT JOIN 
    Post p ON u.id = p.userId
GROUP BY 
    u.country;

关键部分解释:

  • LEFT JOIN:确保所有国家(哪怕没有对应的帖子)都会出现在结果里,没有帖子的类型计数会显示0,而不是被过滤掉。
  • SUM(CASE WHEN ...):对每个帖子类型进行条件判断,如果匹配就加1,否则加0,最终得到该类型在对应国家的总数量。
  • GROUP BY u.country:按国家分组,让每个国家只显示一行统计结果。

举个例子,结果会像这样:

countrysocial_counteconomic_countculture_count
UK210
US032

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:52:37