zoukankan      html  css  js  c++  java
  • 求成绩表中各门课程前三名

    create table #(student varchar(10), class varchar(10), score decimal(9,2)
    ) ON [PRIMARY]
    
    insert # values('A', 'C1', 100)
    insert # values('B', 'C1', 80)
    insert # values('C', 'C1', 70)
    insert # values('E', 'C1', 70)
    insert # values('D', 'C1', 60)
    insert # values('A', 'C3', 100)
    
    select * from # a where score in(select top 3 score from # where class=a.class order by score desc)
    

    查询结果:

     
    student class   score
    A C1 100
    B C1   80
    C C1 70
    E C1 70
    A C3 100

     

    一个同事给的sql是:

    select * from # a where student in(select top 3 student from # where class=a.class order by score desc)
    

     即判断条件依据的是student字段。 查询结果为:

     
    student class   score
    A C1 100
    B C1   80
    E C1 70
    A C3 100

    可以看出来它们的区别:如果筛选结果有相同成绩的, 前者会全部显示出来,即所谓的并列名次。 而后者,仅取了其中的一条记录。

    不太明白的是:为什么C1课程的第三名学生是E,而不是C?


    如果为临时表创建索引,即

    create table #(student varchar(10), class varchar(10), score decimal(9,2)
    CONSTRAINT [PK_tmp] PRIMARY KEY CLUSTERED 
    (
    	student asc,
    	class asc
    )
    ) ON [PRIMARY]
    

     则第三名学生为C


    当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
    本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/archive/2012/03/05/2380525.html


  • 相关阅读:
    linux 环境变量
    Java finally语句到底是在return之前还是之后执行?
    JAVA NIO之浅谈内存映射文件原理与DirectMemory
    cpu架构
    tomcat 安装
    linux 下载rpm包到本地,createrepo:创建本地YUM源
    linux下查看和添加PATH环境变量
    virtualbox 相关操作
    空间叠加分析
    java程序的加载与执行
  • 原文地址:https://www.cnblogs.com/buguge/p/2380525.html
Copyright © 2011-2022 走看看