题解 | #根据指定记录是否存在输出不同情况#

根据指定记录是否存在输出不同情况

http://www.nowcoder.com/practice/f72d3fc27dc14f3aae76ee9823ccca6b

select u.uid,
if(incomplete_cnt is null,0,incomplete_cnt) as incomplete_cnt,
round(if(incomplete_cnt is null,0,incomplete_cnt/total_cnt),3) as incomplete_rate
from user_info u left join 

(SELECT uid,
sum(IF(score is null,1,0)) as incomplete_cnt,
count(*) as total_cnt
FROM exam_record 
group by uid) all_user_table
ON u.uid=all_user_table.uid

left join 

(SELECT u.uid
from user_info u JOIN exam_record e on u.uid=e.uid
WHERE u.level=0
group by uid
HAVING sum(if (score is null,1,0))>2) level_zero
on 1=1
where (level_zero.uid is not null and level =0)
or (level_zero.uid is null and all_user_table.uid is not NULL)
order by incomplete_rate;

全部评论
不管是哪种连接都需要on来进行条件设定,而on 1=1表示连接条件永远成立
点赞 回复 分享
发布于 2021-12-15 11:00
请教下on 1=1 是指什么呢?谢谢!
点赞 回复 分享
发布于 2021-11-16 17:34

相关推荐

06-04 17:59
已编辑
长江大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务