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

如何按分组统计含特定值的元组数量?——SQL查询中显示无符合条件数据的分组结果

如何显示所有游戏类别(含无美国开发者的类别)的统计数

嘿,你的问题根源在于用了内连接(INNER JOIN)——这种连接只会返回两个表中完全匹配的记录,所以那些没有美国开发者的游戏类别直接被过滤掉了。要实现显示所有类别,哪怕对应数量是0,我们需要调整连接方式和条件位置,具体修改如下:

修正后的SQL查询

SELECT 
    g.category,
    COALESCE(COUNT(d.developerID), 0) AS TotalGames
FROM 
    Game g
LEFT JOIN 
    Developer d 
    ON g.developID = d.developerID 
    AND d.country = 'America'  -- 把国家条件放在JOIN里,而非WHERE
GROUP BY 
    g.category;

关键细节解释

  • 左连接(LEFT JOIN):以Game表为核心,保留所有游戏类别记录。即使某个类别里没有美国开发者开发的游戏,这条类别记录依然会被保留,只是关联的开发者字段会是NULL。
  • 条件移至JOIN子句:如果把country = 'America'放在WHERE里,左连接产生的NULL记录会被过滤掉,等于又变回了内连接的效果。把条件放在JOIN的关联条件中,只会筛选出美国开发者的匹配项,不匹配的类别记录依然保留。
  • COALESCE处理空值:当没有匹配的美国开发者时,COUNT(d.developerID)本身就会返回0(因为COUNT会忽略NULL值),不过加上COALESCE可以明确把潜在的NULL转为0,让结果的意图更直观。

如果你想更简洁,也可以去掉COALESCE,直接用COUNT(d.developerID),最终结果是一致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:28:12