首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 一个有点”深度的"sql [已结贴,结贴人:lfrsx]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 15:42:35 楼主
    有个学生表stu有考分score,班级class,现在我想让这个学生表安这样的顺序排
    1.每个班级的学生排到一块儿
    2.班级的顺序由该班成绩最高的学生决定

    请大家赐教!
      谢谢!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 15:45:041楼 得分:1
    SQL code
    select * from ( select *, order_no=max(score)over(partition by class) from tb ) order by order_no desc, class
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 15:45:532楼 得分:1
    问题不清楚

    1.每个班级的学生排到一块儿
    ---------------------------------
    每个班的排在一块 学生是班内排名 还是全部排名


    2.班级的顺序由该班成绩最高的学生决定
    ----------------------------------
    如果两个班的最高成绩一样 怎么排
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 15:46:023楼 得分:10
    SQL code
    select * from stu a order by (select max(score) from stu where class=a.class) desc select a.* from stu a inner join (select max(score) ms,class from stu group by class) b on a.class=b.class order by b.ms desc etc.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dawugui
    • 等级:
    发表于:2008-05-04 15:46:414楼 得分:0
    引用楼主 lfrsx 的帖子:
    有个学生表stu有考分score,班级class,现在我想让这个学生表安这样的顺序排
    1.每个班级的学生排到一块儿
    2.班级的顺序由该班成绩最高的学生决定

    请大家赐教!
      谢谢!


    SQL code
    select * from tb order by class , score desc
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 15:47:285楼 得分:1
    SQL code
    -->上面2005,2000: select * from ( select *, order_no=(select max(score) from tb where class=a.class) from tb as a ) as t -->上面漏了别名
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 15:50:096楼 得分:0
    select * from tb order by class , score desc

    没测试,感觉这样就ok

    you try
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 15:52:317楼 得分:0
    引用楼主 lfrsx 的帖子:

    2.班级的顺序由该班成绩最高的学生决定



    理解为,
    a:班与班哪个排前
    b:同一个班中,哪个学生排前。

    理解方式不同,写法自然有区别。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 15:52:378楼 得分:0
    回复2楼,
    1.一个班的学生排一块儿,就是中间不能夹其他班的学生,至于班级内的排法,也是随便了
    2.班级最高分一样,那就随便哪个班级排千遍了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 15:53:229楼 得分:1
    SQL code
    select S.* from stu S join (select class, score=max(score) from stu group by class) O on S.class=O.class order by O.score desc
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fuanwei
    • 等级:
    发表于:2008-05-04 16:03:3310楼 得分:2
    SQL code
    select * from ( select S.*,(select max(score) from stu O where S.class=O.class) as 最高分 from stu S) as aa order by aa.最高分 asc
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 16:04:4211楼 得分:0
    关注
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 17:23:4612楼 得分:4
    引用 3 楼 fcuandy 的回复:
    SQL codeselect * from stu a order by (select max(score) from stu where class=a.class) desc


    select a.* from stu a
    inner join (select max(score) ms,class from stu group by class) b
      on a.class=b.class
      order by b.ms desc

    etc.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 17:25:4713楼 得分:0
    jl
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved