php 计算列的值的和,php – 在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

标签:php,mysql

来源: https://codeday.me/bug/20190626/1289674.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值