【SQL刷题】注册当天就完成试卷的用户信息

题目

原题对求职意向(用户信息表字段)有限制(关联该表,在where子句加条件就可实现);
同时要求输出第7到9条数据(limit),为简化题目,删除这2要求。

输出在注册当天就完成算法类试卷的用户的id、等级和最大得分。

表信息

试卷信息表examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间);

试卷作答记录表exam_record(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分);

用户信息表user_info(uid用户ID,nick_name昵称, achievement成就值, level等级, job职业方向, register_time注册时间)

输出字段

用户编号:uid【from examination_info】;
用户等级:level【from user_info】;
注册时间:register_time 【from user_info】;
最大得分数:max_score【from examination_info】。

输出要求

1.最大得分降序输出;

思路

实现“注册当天就完成算法类试卷”这一条件,跟这篇有点像【SQL刷题】根据指定记录是否存在输出不同情况
相同在于:构建判断条件是否成立的flag字段。区别在于:这里是过滤分组结果,因此条件在having子句里写。
在这里插入图片描述

注意

是要完成的用户情况,需要加一个判断(submit_time是否为空)

实现

select

er.uid,
ui.level,
ui.register_time,
max(er.score) max_score

from exam_record er
left join user_info ui on er.uid=ui.uid
left join examination_info ei on er.exam_id=ei.exam_id

group by er.uid,ui.level,ui.register_time

having max(if(ei.tag='算法' and date(er.start_time)=
date(ui.register_time) and er.submit_time,1,0))=1

order by max_score desc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值