我有一个数据库表,其中包含用户提交的 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/