php - 计算多列mysql中的值

标签 php mysql

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

username        question1          question2         question3

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

我想要做的是收集每列中每个"is"的计数。所以我会得到每个问题的肯定数量,即“问题 1”=“3”、问题 2 =“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 的简单 bool 比较,但这不能移植到其他 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

关于php - 计算多列mysql中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11328343/

相关文章:

php - 意外异常 : SQLSTATE[HY000] [1045] Access denied for user **** @'localhost' (using password: YES)

python - Django Model.objects.all().delete() 没有完成

php - 根据 PHP 和数据库条件交替/显示按钮

mysql - 调整 MySQL 以利用 4GB VPS

php - 从多维数组中的多个表中获取数据

php - Laravel 播种机中的密码字段没有散列

php - 使用正则表达式分隔组中的字符串

php - Bootstrap 面板未扩展

php - 保护 PHP 被其他站点访问

javascript - TypeError : val. 切片不是函数