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

多列同类型数值的SELECT查询:统计各列值为1的记录数

解决每列值为1的记录统计问题

嗨,我来帮你搞定这个统计需求!你要统计每一列中值为1的记录数,其实用SUM搭配CASE语句就能轻松实现,这是最通用的方法,几乎所有数据库都支持。

通用写法(适用于所有SQL数据库)

假设你的表名叫your_table,四列分别是col1、col2、col3、col4,可以用下面的查询语句:

SELECT
  SUM(CASE WHEN col1 = 1 THEN 1 ELSE 0 END) AS col1_count_1,
  SUM(CASE WHEN col2 = 1 THEN 1 ELSE 0 END) AS col2_count_1,
  SUM(CASE WHEN col3 = 1 THEN 1 ELSE 0 END) AS col3_count_1,
  SUM(CASE WHEN col4 = 1 THEN 1 ELSE 0 END) AS col4_count_1
FROM your_table;

原理说明

  • 逐行检查每一列的值:如果列值等于1,CASE语句返回1,否则返回0
  • SUM函数会把每一行的返回值加起来,最终结果就是该列中值为1的总记录数

简化写法(针对MySQL/MariaDB)

如果你用的是MySQL或MariaDB,还可以用更简洁的写法——因为数据库会把布尔表达式的结果自动转换成1(真)和0(假),所以直接写SUM(col = 1)就行:

SELECT
  SUM(col1 = 1) AS col1_count_1,
  SUM(col2 = 1) AS col2_count_1,
  SUM(col3 = 1) AS col3_count_1,
  SUM(col4 = 1) AS col4_count_1
FROM your_table;

验证你的示例数据

用你提供的测试数据执行上面的查询,会得到如下结果:

  • col1_count_1: 3
  • col2_count_1: 3
  • col3_count_1: 3
  • col4_count_1: 2
    完全符合手动统计的结果,说明这个方法是正确的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:37:04