MYSQL 获取等于特定值的每一列的计数

标签 mysql sql count

我最近建立了一个 MYSQL 数据库,连接到一个填满了复选框的表单。如果选中该复选框,它将在关联的列中插入一个值“1”;否则,它将接收到值“0”。

我想最终查看此表单中的聚合数据,并且想知道是否有任何方法可以使用 MYSQL 为每一列获取一个数字,该数字等于值为的行数'1'。

我试过以下变体:

select count(*) from POLLDATA group by column_name

这是不成功的,而且我能想到的其他任何事情似乎都没有道理(诚然,我在 SQL 方面并不是太有经验)。

我真的很想避免:

select count(*) from POLLDATA where column_1='1'

对于每一列(有将近 100 个)。 除了为每一列输入 select count(*) 语句之外,还有什么方法可以做到这一点吗?

编辑:

如果有帮助,列是“艺术家 1”、“艺术家 2”、....“艺术家 88”、“性别”、“年龄”、“城市”、“州”。正如我在下面试图解释的那样,我希望我能够做类似的事情:

select sum(EACH_COLUMN) from POLLDATA where gender='Male', city='New York City';

(显然 EACH_COLUMN 是假的)

最佳答案

SELECT SUM(CASE 
             WHEN t.your_column = '1' THEN 1
             ELSE 0
           END) AS OneCount,
       SUM(CASE 
             WHEN t.your_column='0' THEN 1
             ELSE 0
           END) AS ZeroCount
  FROM YOUR_TABLE t 

关于MYSQL 获取等于特定值的每一列的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19913009/

相关文章:

php - mysql 获取名字的id

mysql - 如何获取 SQL DUMP 并修改它以适应不同的数据库表结构?

sql - 读取SQL死锁图

tsql 不同的计数

r - 使用带计数的过滤器

php - 通过参数 php 对数组中的数据求和

mysql - MySQL中如何根据其他列的总和创建一个表?

sql - 如何在 DB2 9.7 的模式中搜索触发器?

mysql - 从表中选择重复条目并从重复行中获取所有字段

PHP 和 MYSQL - 获取行的位置