/*-----------实现对科目分组下显示最大的成绩算法---------------*/

/*-----------实现对科目分组下显示最大的成绩算法---------------*/
create   table  liangfei2(学号  varchar ( 10 ),姓名  varchar ( 10 ),科目  varchar ( 10 ), 成绩  int ) -- --建表
insert  liangfei2
select   ' 1 ' , ' 张三 ' , ' 语文 ' , ' 80 '   union   all
select   ' 2 ' , ' 李四 ' , ' 语文 ' , ' 83 '   union   all
select   ' 3 ' , ' 王五 ' , ' 英语 ' , ' 99 '   union   all
select   ' 4 ' , ' 李四 ' , ' 数学 ' , ' 88 '   union   all
select   ' 5 ' , ' 张三 ' , ' 英语 ' , ' 66 '   union   all
select   ' 6 ' , ' 王五 ' , ' 数学 ' , ' 87 '   union   all
select   ' 7 ' , ' 李四 ' , ' 英语 ' , ' 69 '   union   all
select   ' 8 ' , ' 张三 ' , ' 数学 ' , ' 63 '   union   all
select   ' 9 ' , ' 王五 ' , ' 语文 ' , ' 77 '  
go
select  liangfei2. *
from  ( select   max (成绩)  as  mt,科目 -- --------------加入分组列,分组列对应的信息列(我本写的学号,对于GROUP BY ,在SELECT中不能用非分组列)
       from  liangfei2 
      
group   by  科目)  as  b,liangfei2
where  liangfei2.科目 = b.科目  and  b.mt = liangfei2.成绩
go
select   *  
from  liangfei2 
where  (科目,成绩)  in
            (
select  科目, max (成绩) as  mt  from  liangfei2  group   by  科目)
go
select   *  
from  liangfei2 
where    in -- ---------------
            ( select   max (成绩)  from  liangfei2  group   by  科目)
go
select   *   -- -------------SMART的算法,但性能不行
from  liangfei2 a 
where   not   exists
               (
select   1   from  liangfei2  where  科目 = a.科目  and  成绩 > a.成绩)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值