`
lingshangwen
  • 浏览: 62007 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle:进行分组并取每组中的前n条记录

阅读更多

题目:

在oracle中有一数据表exam_result(成绩记录表),

表中的一条记录描述了“某个班某个学生某次考试的成绩"

create table EXAM_RESULT
(
  ID      NUMBER(10) not null,                   --主键
  CLASSID NUMBER(10) not null,           --  班级id,关联到班级表
  USERID  NUMBER(10) not null,             --用户id,关联到用户表
  EXAMID  NUMBER(10) not null,             --试卷id,关联到试卷表
  RESULT  NUMBER(3)                              --成绩
)

 

现在要求统计完成了试卷id为1,2,3的成绩的前3名

即完成了试卷id为1的前3名,完成了试卷id为2的前3名,完成了试卷id为3的前3名

 

select * from (
      select 
		e.classid, 
		e.userid, 
		e.examid, 
		e.result, 
        	row_number() over (partition by e.examid order by e.examid, e.result desc) rn
       			from exam_result e 
				        where e.examid in (1,2,3)
) where rn <= 3
 

 

分享到:
评论

相关推荐

    mysql使用GROUP BY分组实现取前N条记录的方法

    GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法。 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 代码如下:SELECT a.id,a.SName,a.ClsNo...

    Oracle实现对查询结果每N条再次分组博客所用数据库

    标题中的“Oracle实现对查询结果每N条再次分组”是指在Oracle数据库中进行数据处理时,使用SQL语句对查询结果进行分组,而这里的“每N条再次分组”通常指的是使用GROUP BY子句配合ROW_NUMBER()、PARTITION BY等函数...

    oracle材料

    在分组和排序中,`rownum`可以用来限制返回的结果数量,如获取每个组的前N条记录。但要注意,`rownum`在`order by`子句之前计算,因此必须结合子查询或`analytic function`来精确控制排序后的行号。 6. **Wm_concat...

    oracle连续重复行去重

    根据题目描述,我们面对的任务是:对于一个表中的数据,需要将连续n条记录中,`id`和`dno`均相同的记录进行合并。合并后的记录应具有以下特征: - 开始时间为合并范围内最早的开始时间; - 结束时间为合并范围内最晚...

    oracle日志文件大全

    - **组的概念**:一个日志组由一个或多个相同的联机日志文件组成,至少包含两个组,每组至少有一个成员。 - **成员管理**:每个组内的成员具有相同的日志序列号,成员的大小相同,并分散存放在不同的物理磁盘上以...

    oracle多行合并一行

    1. **第一步**:对`m_researcher_stock_rel`表中的每一条记录进行编号,编号的依据是`n_sec_code`和`c_researcher_code`。 ```sql SELECT n_sec_code, c_researcher_code, ROW_NUMBER() OVER (PARTITION BY n_...

    oracle中对null值的处理

    在分组查询中,NULL被视为一个特殊的组。`GROUP BY column` 会将所有NULL值归入同一组。 8. DISTINCT与NULL: 使用`DISTINCT`关键字去除重复项时,每个NULL值被视为单独的记录。 9. NULLIF函数: `NULLIF...

    Oracle学习文档

    - **解释**: 该SQL语句利用ROWID属性,找出每组数据中的最大ROWID,然后删除不匹配这些ROWID的所有记录,从而达到删除重复记录的目的。 ### 3. TOP N 查询 - **语法**: - `SELECT * FROM (SELECT * FROM emp ORDER...

    oracle函数介绍(6) 著名函数之分析函数.doc

    分析函数可按分组计算每个组的行数,并能考虑ORDER BY子句进行顺序计算。 4. FIRST() 和 LAST() 这两个函数用于返回在DENSE_RANK函数生成的集合中的第一个或最后一个元素。在聚合函数中,它们通常与GROUP BY结合...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    Oracle 常用命令大全

    - **BREAK**:对结果集进行分组,并在每组间添加空白行或分隔线。 ```sql BREAK ON column_name SKIP n ``` 这里 `column_name` 是分组依据,`SKIP n` 是每组之间的空行数。 - **COMPUTE**:在每组的末尾计算...

    ORACLE_EBS_FOLDER入門與提高.pdf

    - **排序**:可以对前三列的记录进行排序。点击一次为升序,再次点击变为降序。 - **修改列提示**:通过右键点击列标题可以修改列的提示信息。 这些操作也可以通过下拉菜单或右键菜单来完成。 #### 四、禁用客户化...

    oracle分页,比较简单很好懂

    这些函数可以在查询过程中计算行号,允许我们在分组后进行分页。比如,以下查询同样返回第11到20行,但按照某个`order_by_column`排序: ```sql WITH ranked_data AS ( SELECT your_table.*, RANK() OVER (ORDER ...

    最全的oracle常用命令大全.txt

    ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle&gt;svrmgrl SVRMGR&gt;connect internal SVRMGR&gt;startup ...

    Oracle经验技巧集锦

    9. 查找、删除重复记录:通过`GROUP BY`语句可以找出重复的记录,`COUNT()`和`MAX()`函数结合使用,可以找出每个组的最大值,从而定位重复的记录。 这些Oracle技巧涵盖了从基础操作到高级查询优化的多个方面,熟练...

    oracle分析函数学习

    - Top N和Bottom N用于选取数据集中的前N条或后N条记录,可以结合RANK或ROW_NUMBER实现。 - First/Last函数可以找到每个分组的第一个或最后一个值,这在处理时间序列数据或追踪变化时非常有用。 - NTILE将结果集...

    oracle分析函数.doc

    - `TOP/N Bottom N`:可以用来选择每个分区的前N或后N行,这对于快速获取最高或最低的销售记录非常有用。 - `FIRST_VALUE()`, `LAST_VALUE()`: 返回指定列在当前行所在窗口中的第一个或最后一个值。 - `NTILE(N)`...

    oracle分析函数全面解析

    - **Top/Bottom N, First/Last, NTile**: 这些函数用于选取数据集中的前N个或后N个记录,`FIRST/LAST`则用于获取每个分组的第一行或最后一行,`NTILE`将数据分割成N个等大小或近似等大小的部分。 **3. 窗口函数** ...

    Oracle_常用函数整理

    分组函数用于对一组数据进行统计计算,通常与`GROUP BY`语句一起使用。 - **COUNT(column)**:返回指定列的非空行数。 - **MAX(column)**:返回指定列的最大值。 - **MIN(column)**:返回指定列的最小值。 - **AVG...

    ORACLE分析函数.pptx

    Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,主要用于处理分组数据,提供了一种在聚合数据集上进行计算的方法,而无需使用GROUP BY子句。分析函数可以在数据集的每一行上执行计算,同时考虑行的上...

Global site tag (gtag.js) - Google Analytics