You need to enable JavaScript to run this app. SQL单表两列true值计数求和 按user_id分组关联另一表取用户名
优惠活动
大模型
产品
解决方案
定价
更多

SQL单表两列true值计数求和 按user_id分组关联另一表取用户名

SQL实现方案

你之前的写法统计的是全表col_a、col_b为true的总数量,无法按user_id拆分统计,改用分组聚合的方式即可实现需求,兼容所有主流SQL数据库的写法如下:

SELECT
    a.user_id,
    (SUM(CASE WHEN a.col_a = true THEN 1 ELSE 0 END) + SUM(CASE WHEN a.col_b = true THEN 1 ELSE 0 END)) AS "total (col_a + col_b)",
    b.name
FROM "TABLE_A" a
INNER JOIN "TABLE_B" b 
    ON a.user_id = b.id
GROUP BY a.user_id, b.name
ORDER BY a.user_id ASC;

如果使用PostgreSQL等支持布尔值强转数值的数据库,可以简化写法:

SELECT
    a.user_id,
    (SUM(a.col_a::INT) + SUM(a.col_b::INT)) AS "total (col_a + col_b)",
    b.name
FROM "TABLE_A" a
INNER JOIN "TABLE_B" b 
    ON a.user_id = b.id
GROUP BY a.user_id, b.name
ORDER BY a.user_id ASC;

逻辑说明

  • 对TABLE_A按user_id分组,通过INNER JOIN关联TABLE_B,匹配user_id和TABLE_B的主键id获取对应用户名
  • 用SUM配合CASE WHEN统计每个分组下col_a、col_b为true的条数,二者相加得到该用户的总计数
  • 最终输出结果和你给出的预期结果完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 01:06:04