# 分条件输出时,使用exists来限制条件输出,同时使用union来连接两个查询语句
with t1 as
(
select er.*, ui.uid uuid, level
from exam_record er
right join user_info ui
on er.uid=ui.uid
)
select uuid, round(sum(score is null and start_time is not null),3) incomplete_cnt, round(avg(score is null and start_time is not null),3) incomplete_rate
from t1
where exists (
select uuid
from t1
where level = 0
group by uuid
having sum(score is null) > 2
) and level = 0
group by uuid
union
select uuid, round(sum(score is null and start_time is not null),3) incomplete_cnt, round(avg(score is null and start_time is not null),3) incomplete_rate
from t1
where not exists (
select uuid
from t1
where level = 0
group by uuid
having sum(score is null) > 2
)
group by uuid
having count(start_time)>0
order by incomplete_rate;
解题要注意的是两种输出情形:(1)输出全部0级用户的未完成信息;(2)输出所有作答记录表中有记录的用户的未完成信息。



京公网安备 11010502036488号