`
bolan392
  • 浏览: 277072 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用SQL计算名次

    博客分类:
  • SQL
阅读更多

项目中遇到一个查询,具体需求是:需要根据考试安排编号和一个学生的考试信息编号查询该考生在本次考试安排中的名次,所以用的一下SQL语句:

      select count(*)+1 as 名次 from t_考试信息表 
    where c_考试安排编号= '2c92f49f2a5a8e31012a5aa0d7d00024'
      and c_考试成绩 > (select c_考试成绩 from t_考试信息表
    where c_考试信息编号= '2c92f49f2a651c46012a652551bd0022')

   实际上这里的SQL语句只是做了一个统计,统计了现在有多少人的分数大于需要计算的人的考试成绩,这个计算出来的数字加1,就是名次了。

接下来还需要查询该考生的其他信息,所以需要将这条SQL查询的名次作为一列,加入到另外一个查询中

select *,
    (
        select count(*)+1 as 名次 from t_考试信息表 
     where c_考试安排编号= '2c92f49f2a5a8e31012a5aa0d7d00024'
        and c_考试成绩 > (select c_考试成绩 from t_考试信息表
     where c_考试信息编号= '2c92f49f2a651c46012a652551bd0022')  
    )  as 名次
   from EL_TEST_INFO
    where test_info_id = '2c92f49f2a651c46012a652551bd0022'

  接下来,这条SQL语句经过改良,可以查询一个列表,列出所有考生的信息和名次,并且可以接受用户输入的查询条件:

  select * ,     
       (
     select count(*)+1 as 名次 from t_考试信息表 t2
     where c_考试安排编号 = '2c92f49f2a5a8e31012a'
     and 考试成绩 > t1.考试成绩
     ) as 名次
 from t_考试信息表 t1
 where c_考试安排编号 = '2c92f49f2a5a8e31012a'
     

  

 

这样就完成了最后的查询工作

 

1
0
分享到:
评论

相关推荐

    只用一句SQL计算名次

    只用一句SQL计算名次,允许并列,搜集整理下来,供大家珍藏

    经典SQL脚本大全

    │ │ 2.5.4 计算工作时间的函数.sql │ │ │ └─其他 │ 交叉表.sql │ 任意两个时间之间的星期几的次数-横.sql │ 任意两个时间之间的星期几的次数-纵.sql │ 复杂年月处理.sql │ 统计--交叉表+日期+优先.sql ...

    Sqlserver2000经典脚本

    │ 5.3.3 使用UPDATE进行编号重排的处理示例.sql │ │ 5.3.3 使用临时表进行编号重排的处理示例.sql │ │ 5.3.3 使用子查询进行编号重排的处理示例.sql │ │ 5.3.3 名次查询的处理示例.sql │ ...

    VB学生成绩计算分析系统

    8. **数据库连接**:如果数据量大,可能会使用数据库存储,如Access或SQL Server。VB可以通过ADO(ActiveX Data Objects)连接和操作数据库,实现数据的持久化存储和检索。 9. **报表和图表**:为了便于分析,系统...

    SQL运动会查询系统

    在这个系统中,SQL可能被用来创建和管理运动员、比赛项目、成绩等数据表,以及执行对这些数据的操作,如检索特定运动员的所有成绩,或者计算每个项目的总分。 程序设计语言采用了Visual C++,这是一种面向对象的...

    在VFP中利用SQL语言中的SELECT语句快速统计学生成绩.pdf

    计算学生的总分,即将各科成绩相加,可以使用如下的SQL语句: SELECT 班级, 准考证号, 姓名, 性别, (语文 + 数学 + 外语) AS 总分 FROM 成绩数据表 三、使用SQL进行成绩统计的优势 相较于Excel等电子表格工具,SQL...

    VFP学生管理系统(FoxPro+SQL)

    - **学生管理信息系统功能模块设计**:进一步细化系统功能,如新生入学信息登记、成绩管理、名次计算等。这些模块的合理划分有助于提高系统的可维护性和扩展性。 - **学生管理信息数据库设计**:数据库是系统的核心...

    Delphi 学生成绩管理系统

    开发者可能会使用SQL语句与数据库进行交互,创建表、建立关系、执行查询等操作。 系统的具体功能可能包括: 1. 学生信息管理:添加、修改、删除学生的个人信息,如姓名、学号、班级等。 2. 成绩录入:方便教师输入...

    PL/SQL学习笔记

    通过使用RANK()和DENSE_RANK()函数,我们按产品类型ID分组并计算2003年的总销售额,然后对这些总销售额进行降序排名。这有助于识别高销售量的产品类型。 当我们运行SQL查询时,RANK()和DENSE_RANK()会根据SUM...

    T-SQL高级查询

    2、 对学生的成绩进行排序,得出名次,名次可以并列,但名次的序号是连续递增的 3、 在某些排序的情况下,需要跳空序号,虽然是并列 基本语法 排序函数 over([分组语句] 排序子句[desc][asc]) 排序子句 order ...

    SQL练习(ppt文档).ppt

    SQL是Structured Query Language的缩写,它是用于管理和处理关系数据库的标准语言。在这些SQL练习中,我们看到一系列涉及数据查询、聚合、排序和筛选的基本操作。...通过这些练习,可以提升对SQL语言的理解和使用能力。

    php实现excel中rank函数功能的方法

    在实际应用中,可能需要根据数据特点和性能需求进行调整和优化,例如使用SQL数据库的排序和分组功能来提高效率。 希望本文所述对大家的PHP程序设计有所帮助。在实际应用中,理解并正确使用排名算法,对于数据分析和...

    学科、姓名、分数。 分别计算每门学科分数最高的前三名,并显示名次。写入MySQL中。

    这个任务涉及到数据处理和数据库操作,主要知识点包括使用Apache Spark进行大数据处理,以及使用SQL查询语言对数据进行排序和筛选。 首先,我们看到代码中导入了Apache Spark的相关库,包括`RDD`、`DataFrame`和`...

    计算机二级VisualFoxPro上机考试题库与答案解析45.docx

    使用SQL语句可以创建与现有表结构相同的自由表。在本题中,需要创建一个名为`golden.dbf`的自由表,其结构与"金牌榜"表相同。SQL创建语句为`CREATE TABLE golden FREE (国家代码 C(3), 金牌数 I, 银牌数 I, 铜牌数 ...

    山东理工大学大一第一学期计算机作业及必将内容.pdf

    实验三涉及Excel的应用,学生需创建一份班级成绩统计表,使用Excel函数计算总分、平均分、名次、标准差以及各分数段人数,最后制作柱状图。这需要用到Excel的SUM、AVERAGE、RANK、COUNTIF和STDEV.P等函数。 实验四...

    一道sql面试题附答案

    题目要求使用一句组合查询来实现对Wages表的数据统计,包括员工ID(Emp_id)、基本工资、工龄工资、工资总额以及按照工资总额排序的名次。这是一个涉及数据插入、计算字段、排序和行号生成的综合问题。 首先,我们...

Global site tag (gtag.js) - Google Analytics