欢迎光临散文网 会员登陆 & 注册

sql回答

2022-03-19 23:34 作者:重名还不行的  | 我要投稿

非标准答案
-- 2.1 查询出每门课都大于60分的学姓名


SELECT user_id FROM score WHERE score > 60 GROUP BY user_id HAVING COUNT(1)  >2;

-- 解答

SELECT user_name FROM user WHERE user_id IN (SELECT user_id FROM score  WHERE score > 60 GROUP BY user_id HAVING COUNT(1) >2);

-- 2.2 查询出总分大于220分的 学生姓名,与总分数

SELECT user_id,SUM(score) FROM score  GROUP BY user_id HAVING SUM(score)  >220;

-- 解答

SELECT user_name FROM user WHERE user_id IN (SELECT user_id FROM score   GROUP BY user_id HAVING SUM(score) >220);

-- 2.3 用sql语句把每个学生的总分数更新到User用户表 的user_score 学生总分数 字段里

-- 解答

UPDATE `user` u  SET user_score = (SELECT SUM(score)  FROM score WHERE  user_id = u.user_id  GROUP BY user_id );

-- 2.4 查询出学生的 班级名称、姓名、课程名称、分数

SELECT c.class_name,u.user_name,s.course,s.score FROM user u JOIN score s  ON u.user_id = s.user_id JOIN class c ON c.class_id = u.class_id;

-- 2.5 查询出每个学生的班级、姓名、平均分、最高分数、最低分数,保留两位小数

SELECT user_id, ROUND(avg(score),2) ascore , max(score) xscore , min (score)iscore FROM score GROUP BY user_id;

-- 解答
SELECT c.class_name,u.user_name,a.ascore '平均分', a.xscore '最高分 数',a.iscore '最低分数'
FROM user u JOIN class c ON c.class_id = u.class_id
JOIN (
SELECT user_id, ROUND(avg(score),2) ascore , max(score) xscore , min (score)iscore FROM score GROUP BY user_id
) a
ON a.user_id = u.user_id;

-- 2.6 查询出学生的 班级名称、最高分的课程、最高分数

-- 查询每个user_id 最高分数
SELECT user_id,max(score) xscore FROM  score GROUP BY user_id;

-- 查询每个user_id 最高分数 最高分的课程  s1
SELECT s.user_id,course,xscore FROM  score s JOIN
(SELECT user_id,max (score) xscore FROM  score GROUP BY user_id)a
ON a.user_id = s.user_id  WHERE score = a.xscore;

-- 查询出学生的 班级名称 user_id          s2
SELECT c.class_name,u.user_id,u.user_name FROM user u JOIN class c ON  u.class_id = c.class_id;

-- 解答a
SELECT s2.class_name,s2.user_name,s1.course 最高分课程,s1.xscore 最高分  FROM
(
SELECT s.user_id,course,xscore FROM  score s JOIN
(SELECT user_id,max (score) xscore FROM  score GROUP BY user_id)a
ON a.user_id = s.user_id  WHERE score = a.xscore
) s1
JOIN (
SELECT c.class_name,u.user_id,u.user_name FROM user u JOIN class c ON  u.class_id = c.class_id
) s2
ON s1.user_id = s2.user_id;

-- 解答b
select b.class_name,b.user_name,b.d 最高分,g.course 最高分课程 from score g
join(
select c.class_name,a.user_name,a.d from class c
   join(
    select u.class_id,s.user_id,u.user_name,max(score) d from score s left join  user u on s.user_id=u.user_id group by s.user_id
)a on a.class_id=c.class_id
)b

on b.d=g.score ;

sql回答的评论 (共 条)

分享到微博请遵守国家法律