如何利用 sum(if()) 执行一条sql语句,查出一个表里,不同条件对应的数据条数

背景

现在有一个需求,就是用一条sql语句如何查出试卷表(exam_user)中的,已批改人数,已答未批改人数,未答人数。

idexam_iduser_idid_doneis_review
11100
21210
31310
41411

解决

编写sql
sqlSELECT SUM(IF((eu.`is_done` = 1 AND eu.`is_review` = 1),1,0)) AS corrected,SUM(IF((eu.`is_done` = 1 AND eu.`is_review` = 0),1,0)) AS uncorrected,SUM(IF((eu.`is_done` = 0 ),1,0)) AS noAnswered FROM exam_user eu WHERE eu.`exam_id` = 1;
执行结果

correcteduncorrectednoAnswered
121

解析:
SUM(IF((eu.is_done = 1 AND eu.is_review = 1),1,0)) ,意思就是当 eu.is_done = 1 AND eu.is_review = 1条件成立时,SUM加1,不成立时加0。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值