我最近建立了一个 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/