交叉表查询---统计成绩(转)

 表1  StuInfo
None.gif 如: StuID    Name     Class
None.gif  
4020   望仪容  1班
None.gif   
4022   答复   3班
None.gif   
4025   地方   2班
None.gif   
4021   达到   1班
None.gif   
4023   的啊   3班
None.gif   
4024   haoha   2班

表2  StuScore
None.gif 如:StuID    Course    Score 
None.gif   
4020   数学    50
None.gif   
4020   英语    80
None.gif   
4022   数学    70
None.gif   
4022   英语    80
None.gif   
4025   数学    30
None.gif   
4025   英语    50
None.gif   
4021   数学    80
None.gif   
4021   英语    90
None.gif   
4023   数学    60
None.gif   
4023   英语    70

一、查询每位学生姓名与总成绩。
None.gif SELECT  tbl.StuID  as  学号,Name  as  姓名,tbl.zcj  as  总分 
None.gif
from  StuInfo  INNER   JOIN  
None.gif(
None.gif
select  StuID, SUM (Score)  as  zcj  from  StuScore  group   by  StuID
None.gif)tbl 
None.gif
on  StuInfo.StuID = tbl.StuID

结果:
None.gif         学号      姓名   总分
None.gif1 
4020      望仪容      130
None.gif2 
4021      达到       170
None.gif3 
4022      答复       150
None.gif4 
4023      的啊       130
None.gif5 
4025      地方       80
None.gif


二、查询各班级的总分第一名。

我只查出了(班级、总分),但不知道怎样查出如下结果形式(班级、姓名、总分)

None.gif SELECT  Class  as  班级, MAX (score)  as  总分 
None.gif
from
None.gif(
None.gif 
select  A.StuID,A.Name,A.Class,B.Score  from  StuInfo A  INNER   JOIN  
None.gif    (
None.gif      
select  StuID, Sum (score)  as  Score  from  StuScore  group   by  StuID
None.gif    )B 
None.gif 
on  A.StuID = B.StuID
None.gif)Tmp 
group   by  Class

结果:

None.gif        班级  总分
None.gif1      1班  
170
None.gif2      2班  
80
None.gif3      3班  
150

终于做出来了,不过感觉似乎有点麻烦!不知道有没简单点的?

None.gif SELECT  C.Class  as  班级,D.Name  as  姓名,C.MaxSco  as  总分 
None.gif
FROM
None.gif(
None.gif
select  Class, MAX (score)  as  MaxSco  from  
None.gif  (
select  A.StuID,A.Name,A.Class,B.Score 
None.gif    
from  StuInfo A  INNER   JOIN  
None.gif        (
select  StuID, SUM (score)  as  Score  from  StuScore  group   by  StuID)B 
None.gif    
on  A.StuID = B.StuID
None.gif   )D 
group   by  Class
None.gif)C 
None.gif
INNER   JOIN  
None.gif(
select  A.StuID,A.Name,A.Class,B.Score 
None.gif  
from  StuInfo A  INNER   JOIN  
None.gif     (
select  StuID, SUM (score)  as  Score  from  StuScore  group   by  StuID)B 
None.gif  
on  A.StuID = B.StuID
None.gif)D 
None.gif
ON  C.MaxSco = D.Score  and  C.Class = D.Class 
None.gif
ORDER   BY  C.Class

 结果:

None.gif       班级   姓名    总分
None.gif
1    1班        达到    170
None.gif
2    2班    地方      80
None.gif
3    3班    答复      150
None.gif

转载于:https://www.cnblogs.com/wgx1323/archive/2007/06/12/780128.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值