sql题目--面对多表连接的粗暴想法

思路:

①先看涉不涉及null,涉及的话注意外连接和条件,这里不涉及

直接联立三个表,对t1、t2、t3之间建立联系之后筛选出大学

③对于怎么联立,大概正常来说由于t1.device_id对应着t2.device_id有多个,所以对t1、t2用right join ,再和t3用left join--但其实对于没有空的情况,inner join会产生笛卡尔积,与他们的效果一样

④按照难度进行分组

⑤最后使用之前讲过的sum+if函数统计正确率

SELECT t3.difficult_level as difficult_level,

sum(if(t2.result="right",1,0))/ COUNT(t2.result) as correct_rate

FROM user_profile t1

RIGHT JOIN question_practice_detail t2

ON (t2.device_id = t1.device_id)

LEFT JOIN question_detail t3

ON (t3.question_id = t2.question_id)

WHERE t1.university = "浙江大学"

GROUP BY t3.difficult_level
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值