繁体   English   中英

计算多列mysql中的值

[英]count values in multiple columns mysql

我有一个数据库表,其中包含用户提交的3个问题的答案。 所有问题的答案都是肯定/没有答案。 像这样

username        question1          question2         question3

user1           yes                no                yes
user2           yes                yes               yes
user3           yes                no                no
user4           no                 no                no

我想要做的是收集每列中每个'是'的计数。 所以我对每个问题都有一定数量的肯定,即'question1'='3',question2 ='1'等等。

目前我对每个问题都有3个单独的陈述,但是我只是想知道是否有办法将这些语句合并为一个语句以使其更有效?

这可以通过围绕CASE语句的简单聚合SUM() (没有GROUP BY )来完成。 如果值为yes ,则返回1,否则返回0.然后通过SUM()将这些1添加到列上。

SELECT 
  SUM(CASE WHEN question1 = 'yes' THEN 1 ELSE 0 END) AS q1,
  SUM(CASE WHEN question2 = 'yes' THEN 1 ELSE 0 END) AS q2,
  SUM(CASE WHEN question3 = 'yes' THEN 1 ELSE 0 END) AS q3
FROM yourtable

MySQL还允许进行简单的布尔比较,返回1或0,但这不能移植到其他RDBMS。

/* Shorter version, only works for MySQL */
SELECT 
  SUM(question1 = 'yes') AS q1,
  SUM(question2 = 'yes') AS q2,
  SUM(question3 = 'yes') AS q3
FROM yourtable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM