17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩(重重点与35一样)

--  17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩(重重点与35一样)
--再加INNER JOIN 是因为用了GROUP BY 语句不能再SELECT 里出现未有的信息,如c_id
SELECT * FROM
score as bc_id
INNER JOIN
(SELECT s_id,AVG(s_score) '平均成绩' FROM score
GROUP BY s_id)as a on a.s_id=b.s_id

ORDER BY a.平均成绩 DESC

17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩(重重点与35一样)_第1张图片

--  17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩(重重点与35一样)
SELECT s_id,MAX(CASE WHEN c_id='01' THEN s_score ELSE NULL END)"语文",MAX(CASE WHEN c_id='01' THEN s_score ELSE NULL END)"数学",MAX(CASE WHEN c_id='01' THEN s_score ELSE NULL END)"英语",AVG(s_score)"平均成绩"
FROM score
GROUP BY s_id
ORDER BY AVG(s_score) DESC

17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩(重重点与35一样)_第2张图片

你可能感兴趣的:(面试题,sql)