学生成绩表(stu_score): 
姓名:name 课程:subject 分数:score 学号:stuid完成以下统计查询: 
1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩) 
2.计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩) 
3.计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩) 
4.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩) 
5.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩) 
6.列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩) 
7.统计如下: 
学号 姓名 语文 数学 英语 总分 平均分 8.列出各门课程的平均成绩(要求显示字段:课程,平均成绩) 
9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名)

解决方案 »

  1.   

    1.select name 姓名,sum(score) 总成绩 from stu_score group by name order by 总成绩 desc
    2.select stuid 学号,name 姓名,sum(score) 总成绩 from stu_score group by stuid,name order by 总成绩 desc
    3.select stuid 学号,name 姓名,subject 课程,score 单科最高成绩 from stu_score t where not exists(select 1 from stu_score where name=t.name and subject=t.subject and score>t.score)先来三个
      

  2.   

    学生成绩表(stu_score): 
    姓名:name 课程:subject 分数:score 学号:stuid 完成以下统计查询: 
    1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩) 
      select m.name , m.score , px = (select count(1) from (select name , stuid , sum(score) score from stu_score group by name , stuid) n where score > m.score) + 1 from
      (select name , stuid , sum(score) score from stu_score group by name , stuid ) m2.计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩) 
      select m.* , px = (select count(1) from (select name , stuid , sum(score) score from stu_score group by name , stuid) n where score > m.score) + 1 from
      (select name , stuid , sum(score) score from stu_score group by name , stuid ) m3.计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩) 
      select stuid , name , subject , max(score) score from stu_score group by stuid , name , subject4.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩) 
      select stuid , name , avg(score) score from stu_score group by stuid , name5.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩) 
      select t.* from stu_score t where score = (select max(score) from stu_score where subject = t.subject)6.列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩) 
      select t.* from stu_score t where score in (select top 2 score from stu_score where subject = t.subject order by score desc)7.统计如下: 
      学号 姓名 语文 数学 英语 总分 平均分 
      select 学号 , 姓名 ,
        max(case subject when '语文' then score else 0 end) [语文],
        max(case subject when '数学' then score else 0 end) [数学],
        max(case subject when '英语' then score else 0 end) [英语],
        sum(score) 总分,
        avg(score) 平均分
      from stu_score
      group by 学号 , 姓名  select 学号 , 姓名 ,
        max(case subject when '语文' then score else 0 end) [语文],
        max(case subject when '数学' then score else 0 end) [数学],
        max(case subject when '英语' then score else 0 end) [英语],
        (select sum(score) from stu_score where subject in('语文','数学','英语') and 学号 = t.学号 and 姓名 = t.姓名) 总分,
        (select avg(score) from stu_score where subject in('语文','数学','英语') and 学号 = t.学号 and 姓名 = t.姓名) 平均分
      from stu_score t
      group by 学号 , 姓名8.列出各门课程的平均成绩(要求显示字段:课程,平均成绩) 
      select subject , avg(score) acore from stu_score group by subject9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名) 
      select * , px = (select count(1) from stu_score where subject = '数学' and score > t.score) + 1 from stu_score t where subject = '数学'
      

  3.   

    4.select stuid , name , avg(score) score from stu_score group by stuid , name
    5.select * from stu_score t where score = (select top 1 score from stu_score where subject = t.subject order by score desc)
    6.select * from stu_score t where score = (select top 2 score from stu_score where subject = t.subject order by score desc)
      

  4.   

    7.select
         stuid,
         name ,
         语文=max(case subject when '语文' then score end),
         数学=max(case subject when '数学' then score end),
         英语=max(case subject when '英语' then score end),
         总分=sum(score),
         平均分=avg(score) 
      from stu_score
      group by stuid,name
    8.select subject,avg(score) acore from stu_score group by subject
    9.select * , 排名=(select count(1) from stu_score where name=t.name and subject = '数学' and score >= t.score) from stu_score t where subject = '数学'