加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在mysql的多列中计算值

发布时间:2020-12-13 17:12:32 所属栏目:PHP教程 来源:网络整理
导读:我有一个数据库表,其中包含用户提交的3个问题的答案.所有问题的答案都是肯定/没有答案.像这样 username question1 question2 question3user1 yes no yesuser2 yes yes yesuser3 yes no nouser4 no no no 我想要做的是收集每列中每个’是’的计数.所以我对每
我有一个数据库表,其中包含用户提交的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读