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
  FROM [GCSDB_2].[dbo].[EVENT_REPORTS] ) TT WHERE ROWNUM1<2

第一步 分组排序,加上编号,第二步删选第几名

oracle类似,只不过加函数不同

select * from (select  t.*,row_number() over(partition by t.subject_no order by t.score desc) pm from score t) where pm<4;

oracle是用row_number 来加编号的
时间: 2024-08-19 06:12:26

sqlserver 或者 oracle 查询每科成绩前三名问题的相关文章

sql 查询每科的前三名

废话不多说,直接上脚本 CREATE TABLE [dbo].[Students]( [ID] [int] IDENTITY(1,1) NOT NULL, [name] [nchar](20) NULL, [kemu] [nchar](20) NULL, [score] [int] NOT NULL, CONSTRAINT [PK_Students] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NOREC

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

查询各科成绩前三名的记录:(不考虑成绩并列情况),显示(学号.课程号.分数) 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 (PA

SQLServer访问Oracle查询性能问题解决

原文:SQLServer访问Oracle查询性能问题解决 1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考这篇文章http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 目前的查询语句就是一个简单的带where条件的查询语句,类似如下: SELECT * FROM LINKED_NAME..A

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,

Oracle查询使用空间比较大的前15个表

-- 查询使用空间比较大的前15个表 select a.* from( select owner,segment_name,SEGMENT_TYPE, round(bytes/1024/1024/1024,2) all_size from dba_segments where SEGMENT_TYPE='TABLE' order by all_size desc ) a where rownum <15;

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

oracle查询不显示小数点前的0

1.问题起源       oracle 数据库字段值为小于1的小数时,使用char类型处理,会丢失小数点前面的0       例如0.35就变成了.35 2.解决办法:用to_char函数格式化数字显示       select     to_char(0.338,'fm9999999990.00') from dual;      结果:0.34      这里重点要看 fm9999999999.99,表示整数部分最多10位,小数部分2位,fm表示去 掉转位字符串后前面的空格,不加fm,0.3

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

Oracle、MySql、SQLServer 数据分页查询

Oracle.MySql.SQLServer 数据分页查询 摘自:http://www.cnblogs.com/wangyong/p/3396333.html 近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句 * firstIndex: