在日常工作刷题或其他情形时候我们经常会需要将多个表连接的情况,多数情况下我们都会使用jion将表连接起来再进行字段的选择,今天我会以mysql为例来讲解join隐藏的细节
我们可以看到连接语法如下
select [字段1、字段2、字段3...] from table1 as alias1 <inner、left、right、outer> join table2 as alias2 on alias1.字段 = alias2.字段
当所选字段有歧义时,需要以别名指定字段
牛客网MySQL题目-SQL23 统计每个学校各难度的用户平均刷题数
运营想要计算一些参加了答题的不同学校、不同难度的用户平均答题量,请你写SQL取出相应数据
思路:
第一步找出需要展示的字段 university、difficult_level 以及平均答题数量[答题数量/答题个数]
第二步进行表合并,将三张表进行内连
第三步通过university、和difficult_level排序
select university,difficult_level,count(qd.question_id)/count(distinct up.device_id)
from question_detail as qd
inner join question_practice_detail as qpd
on qd.question_id = qpd.question_id
inner join user_profile as up
on up.device_id = qpd.device_id
group by university,difficult_level
select university,count(question_id)/count(distinct up.device_id)
from question_practice_detail as qpd
inner join user_profile as up
on qpd.device_id=up.device_id
group by university