查询各科成绩前三名的记录

查询各科成绩前三名的记录:(不考虑成绩并列情况),显示(学号、课程号、分数)

SELECT * FROM (
              SELECT SC.STUDENT_NO SNO,
              SC.COURSE_NO CNO,
              SC.CORE SCORE,
              ROW_NUMBER() OVER(PARTITION BY SC.COURSE_NO ORDER BY SC.CORE DESC) RN
              FROM HAND_STUDENT_CORE SC) A
WHERE A.RN <= 3

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 

表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

时间: 2024-10-26 15:26:48

查询各科成绩前三名的记录的相关文章

MySQL中查询获取每个班级成绩前三名的学生信息

今天有同事说到了怎么MySQL中查询获取每个班级成绩前三名的学生信息,在网上查了查,然后写出代码,很快就OK了. CREATE TABLE t_testscore(    pk_id INT PRIMARY KEY,    c_name VARCHAR(50) ,    c_score INT,    c_class INT )DEFAULT CHARSET=utf8; INSERT INTO t_testscore VALUES (1, '张三6', 66, 1),(2, '张三5', 65,

sql实现分组排序-实例分别获取男女成绩前三名的学生姓名

表scores (name,sex,score),分别获取男女前三名学生姓名. 建立表格: create table scores ( name varchar2(8),sex varchar2(1),score number(3,0)  ) 插入学生成绩 insert into scores(name,sex,score) values ('男A','1',100);  insert into scores(name,sex,score) values ('男B','1',90);  inse

sql从学生成绩表中查出各科成绩分布最多的记录

题目:有一个数据表student,包含name(姓名),dept(科目),score(成绩)三个字段,现在要求查出每科成绩分数分布最多的项,如语文成绩80分最多,就输出语文80分的人数,数学90分的人最多,输出数学90分的人数: 测试数据: insert into student values ("deng","80","语文"); insert into student values ("zhang","80&qu

SQL中显示查询结果的前几条记录

在使用数据库查询语句的过程中,我们经常需要返回查询结果的前几条或者中间几条数据,下面是我总结的几种数据库常用的方法:(table是数据库表名,table2是table表的别名) 1.SQLServer sqlserver支持top关键字,返回前若干条数据.select top 5 * from table;// 返回前5行数据 2.MySQL mysql支持limit,只能适用于mysql.limit子句用于强制select语句返回置顶的记录数,接受一个或两个数字参数,必须是整数常量.一个参数是

sqlserver 或者 oracle 查询每科成绩前三名问题

SELECT * FROM (SELECT [PK_EVENT_REPORT_ID] ,[FK_REPORT_FLOW_ID] ,[EVENT_REPORT_KIND] ,[EVENT_REPORT_TYPE] ,[EVENT_REPORT_ORG] ,[EVENT_REPORT_NUMBER] ,DENSE_RANK() OVER(partition by EVENT_REPORT_ORG ORDER BY [EVENT_REPORT_SUMIT_DATE] DESC) AS ROWNUM1

查询各科成绩不合格与合格人数

ID Name Class Score 1 张三 数学 93 2 张三 语文 66 3 张三 英语 70 4 张三 理综 55 5 李四 数学 88 6 李四 语文 76 7 李四 英语 25 8 李四 理综 55 9 王五 数学 54 10 王五 语文 91 11 王五 英语 56 12 王五 理综 58 NULL NULL NULL NULL sql语句: select Class as 课程,sum(不合格) 不合格,sum(合格) 合格,sum(总人数) 总人数 from (select

一个学生分数表,用sql语句查询出各班级的前三名

昨天去一家公司面试,被这道题难住了,哎,又失去一次好的机会. 回来 之后就再想这个问题 表结构及数据如下: 实现的sql语句: 刚开始的实现是 select * from student a where a.id in (SELECT b.id from student b where b.classId=a.classId ORDER BY grade DESC LIMIT 0,3) ;看起来没毛病,其实一大堆,第一 对于mysql来说,in(里面不能使用limit) 有语法错误,第二 前三名

2014-12-1-1820-Java-取成绩最高的前三名

import java.util.Arrays;public class HelloWorld {        //完成 main 方法    public static void main(String[] args)    {       int[] scores={89 , -23 , 64 , 91 , 119 , 52 , 73};       System.out.println("考试成绩前三名为:");               HelloWorld hlw=new

Java编程练习之输出考试成绩的前三名

在慕课网学习的时候遇到了这样一个Java编程练习题,正好对所学习的Java基础知识检验一下: 请根据所学知识,编写一个Java程序,实现输出考试成绩的前三名 要求: 1考试成绩已保存在数组scores中,数组元素依次为89 , -23 , 64 , 91 , 119 , 52 , 73 2要求通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传入 3要求判断成绩的有效性( 0-100 ),如果成绩无效,则忽略此成绩 我自己分析了一下这个程序的过程: (1)首先是定义一个包含整型数组参数的