【牛客刷题笔记】SQL非技术快速入门篇②
SQL21 浙江大学用户题目回答情况
若一个查询同时涉及两个或两个以上的表,则称之为连接查询。连接查询是关系数据库中最主要的查询。连接查询包括内连接、外连接和交叉连接等。连接查询中用于连接两个表的条件称为连接条件或连接谓词。
注:如果为表指定了别名,则查询语句中其他所有用到表名的地方都要使用别名
//查询所有学生的姓名、班名和系名。
SELECT 姓名,班名,系名
FROM 学生表 s JOIN 班级表 bjb
ON s.班号 = bjb.班号
JOIN 系表 xb ON bjb.系号 = xb.系号
//查询软件工程系所有学生的情况,要求列出学生姓名和所在的系。
SELECT 姓名, 系名
FROM 学生表 s JOIN 班级表 bjb
ON s.班号 = bjb.班号
JOIN 系表 xb ON bjb.系号 = xb.系号
WHERE 系名= '软件工程系'
//有分组的多表连接查询。查询每个班的学生的考试平均成绩。
SELECT 班号,
AVG(成绩) AS 班平均
FROM 学生表 S JOIN 成绩表 g
ON S.学号 = g.学号
GROUP BY 班号
//有分组和行过滤的多表连接查询。查询21226P班每门课程的选课人数、平均成绩、最高成绩和最低成绩。
SELECT 课程号, COUNT(*) AS Total,
AVG(成绩) AS Avg成绩,
MAX(成绩) AS Max成绩,
MIN(成绩) AS Min成绩
FROM 学生表 S JOIN 成绩表 g
ON S.学号 = g.学号
WHERE 班号 = '21226P'
GROUP BY 课程号
答案:
//方式一:join联合查询
select q.device_id, question_id, result
from question_practice_detail q join user_profile p
on q.device_id = p.device_id
where university = '浙江大学'
//方式二:子查询 where in
select device_id, question_id, result
from question_practice_detail
where device_id in (select device_id from user_profile where university=