if函数的使用实例

该文章描述了如何通过SQL查询获取复旦大学用户在8月份的练习题目总数和正确答案数量,对未练习过的用户显示0。查询结果包括device_id、university、练习题目总数(question_cnt)和正确问题数(right_question_cnt)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

题目: 现在运营想要了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况,请取出相应明细数据,对于在8月份没有练习过的用户,答题数结果返回0.

示例:用户信息表user_profile

iddevice_idgenderageuniversitygpaactive_days_within_30
12138male21北京大学3.47
23214male复旦大学4.015
36543female20北京大学3.212
42315female23浙江大学3.65
55432male25山东大学3.820
62131male28山东大学3.315
74321female26复旦大学3.69

示例:question_practice_detail

iddevice_idquestion_idresultdate
12138111wrong2021-05-03
23214112wrong2021-05-09
33214113wrong2021-06-15
46543111right2021-08-13
52315115right2021-08-13
62315116right2021-08-14
72315117wrong2021-08-15
……

根据示例,你的查询应返回以下结果:

device_iduniversityquestion_cntright_question_cnt
3214复旦大学30
4321复旦大学00

解:

select up.device_id, up.university,

          case when count(question_id) > 0 then count(question_id) else 0 end as question_cnt,

          sum(if(result = 'right', 1, 0)) as right_question_cnt

from user_profile up left join question_practice_detail qpd on up.device_id = qpd.device_id and month(date) = 08

where university = '复旦大学'

group by device_id;

函数积累

if(判断式,为真返回值,为假返回值)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值