`
咖啡舞者
  • 浏览: 129242 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

请教:ORACLE中一条语句返回多种记录类型的TOP N?

阅读更多
ORACLE中能不能用一条SQL语句 分别返回EVENTTYPENAME下不同类型的的TOP N呢?

===============补充============
换种类似的简单的来说明一下我的意思:

比如下表这张表,

+----------------------+
| 学生 | 学科 | 成绩 |
+----------------------+
| AA | 语文 | 93 |
+----------------------+
| BB | 语文 | 88 |
+----------------------+
| CC | 语文 | 72 |
+----------------------+
| AA | 数学 | 88 |
+----------------------+
| BB | 数学 | 77 |
+----------------------+
| CC | 数学 | 66 |
+----------------------+

我想返回各科成绩排名前2的记录:
得到:
+----------------------+
| 学生 | 学科 | 成绩 |
+----------------------+
| AA | 语文 | 93 |
+----------------------+
| BB | 语文 | 88 |
+----------------------+
| AA | 数学 | 88 |
+----------------------+
| BB | 数学 | 77 |
+----------------------+

这个语句应该怎么写呢?如果有多少门学科是动态追加的,是不是就不能用UNION来做了,请教一下。


↓ 附件图片删除不了```
  • 大小: 14.9 KB
  • 描述: ORACLE中能不能用一条SQL语句 [b]分别[/b]返回EVENTTYPENAME下不同类型的的TOP N呢?
  • 大小: 14.9 KB
分享到:
评论
4 楼 咖啡舞者 2007-09-18  
明白了,用分析函数来做,如:
select * from( select name,subject,score,rank()over(partition by subject order by score desc) mm from test
)where mm<=3
感谢楼上的提示。
3 楼 Friedrich 2007-08-29  
ORACLE里面可以用分组排名函数,大概可以解决楼主的问题

http://www.cnblogs.com/lizw/archive/2007/04/26/729005.aspx
2 楼 咖啡舞者 2007-08-29  
换种类似的简单的来说明一下我的意思:

比如下表这张表,

+----------------------+
|  学生 | 学科  |  成绩  |
+----------------------+
|  AA   | 语文  |  93   |
+----------------------+
|  BB   | 语文  |  88   |
+----------------------+
|  CC   | 语文  |  72   |
+----------------------+
|  AA   | 数学  |  88   |
+----------------------+
|  BB   | 数学  |  77   |
+----------------------+
|  CC   | 数学  |  66   |
+----------------------+

我想返回各科成绩排名前2的记录:
得到:
+----------------------+
|  学生 | 学科  |  成绩  |
+----------------------+
|  AA   | 语文  |  93   |
+----------------------+
|  BB   | 语文  |  88   |
+----------------------+
|  AA   | 数学  |  88   |
+----------------------+
|  BB   | 数学  |  77   |
+----------------------+

这个语句应该怎么写呢?如果有多少门学科是动态追加的,是不是就不能用UNION来做了,请教一下。
1 楼 ddandyy 2007-08-29  
不太明白你要做什麽
不過做是肯定能做的
大不了用union all就是了

相关推荐

    Oracle左连接返回多条记录中一条记录的查询语句

    Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录

    Oracle批处理:使用C# 自带Oracle驱动一次执行多条Sql语句

    本文将深入探讨如何在C#中利用Oracle自带的驱动来实现批处理,以一次执行多条SQL语句。 首先,我们需要了解Oracle的数据驱动,即ODP.NET(Oracle Data Provider for .NET)。这是Oracle公司为.NET开发者提供的一个...

    Oracle Sql语句转换成Mysql Sql语句

    1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在MySQL中可能需要转换为DECIMAL、TEXT或BLOB。例如,Oracle的NUMBER可以转换为MySQL的DECIMAL或FLOAT,LONG可以转换为TEXT。 2. **分页查询**:Oracle...

    oracle一条sql语句分页

    假设我们需要获取第n页的数据,每页包含m条记录。那么,首先我们需要确定查询的起始位置(即第一页的起始位置是1,第二页的起始位置是m+1,以此类推)。接下来,我们可以按照以下步骤构建SQL查询语句: 1. **计算...

    如何在Oracle中实现SELECT TOP N的方法

    在Oracle数据库中,由于不直接支持SQL Server中的`SELECT TOP N`语法,用户通常需要采用其他方式来实现相同的功能,即获取数据集的前N条记录。以下将详细讲解如何在Oracle中实现这一操作。 1. 基本的SELECT TOP N...

    Oracle导出INSERT语句

    4. **生成INSERT语句**:工具会遍历所选表的所有记录,为每一条数据生成一个INSERT INTO语句,结构通常为 `INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);` 5. **保存与输出**:生成的INSERT语句会...

    oracle四大宝典之1:Oracle Sql基础

    `将一条记录插入到Employees表中。 5. **查询数据**: `SELECT`语句是SQL中最常用的命令,用于从数据库中检索信息。基础用法如`SELECT * FROM Employees;`会返回Employees表中的所有记录。通过`WHERE`子句可以添加...

    oracle通过1条语句插入多个值的方法示例

    这条语句在mysql中执行的话,语法一点毛病都没有,但是,在oracle上执行一直报错: ORA-00933: SQL 命令未正确结束 后来有了如下的解决办法: /* --一、建表 create or replace table pm_ci ( ci_id varchar2(20...

    oracle执行update语句时卡住问题分析及解决办法

    这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。由于我的java程序...

    如何在Oracle中实现SELECT_TOP_N的方法

    在Oracle数据库中,由于不直接支持SQL Server中的`SELECT TOP N`语法,我们需要采用其他方法来获取表中的前N条记录。以下是如何在Oracle中实现类似功能的详细步骤。 1. **基本方法:使用ROWNUM和ORDER BY** Oracle...

    Oracle中SQL语句执行效率的查找与解决

    综上所述,Oracle中SQL语句执行效率的查找与解决是一个复杂但系统性的过程。通过对资源消耗、执行计划和常见执行计划类型的深入了解,数据库管理员可以采取有效措施,优化查询性能,确保系统的高效稳定运行。

    oracle关于日期的查询语句

    在Oracle数据库中,日期是数据处理的核心部分,无论是记录事务发生的时间、设定时间窗口进行数据分析,还是设置基于时间的触发器,都离不开对日期的查询和操作。本篇将深入探讨Oracle关于日期的查询语句及其相关知识...

    oracle分页查询并返回总记录数据存储过程

    本文将详细介绍如何在 Oracle 中创建一个用于分页查询并返回总记录数的存储过程。 #### 核心概念 1. **存储过程**:存储在数据库中的可编程对象,可以接受参数、执行操作、返回结果。 2. **分页**:通过限制查询...

    oracle常用SQL语句(汇总版).docx

    Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义语句(DDL)和其他相关知识...

    Oracle导出INSERT语句V1.1

    Oracle数据库是世界上最流行的数据库管理系统之一,它广泛应用于各种规模的企业和组织中,用于存储和管理大量结构化数据。在日常数据库管理和开发过程中,有时我们需要将Oracle数据库中的数据导出为INSERT语句,以便...

    oracle sql语句学习

    Oracle SQL语句是数据库管理与数据查询的重要工具,尤其在大型企业级应用中,Oracle数据库系统因其稳定性、高效性及广泛的功能支持而被广泛应用。本资料包“Oracle SQL语句学习”旨在帮助初学者从基础入手,逐步掌握...

    Oracle经典SQL语句

    Oracle支持B树索引、位图索引、函数索引等多种类型,选择合适的索引类型对于优化查询至关重要。 7. **子查询**:子查询是嵌套在其他查询中的查询,可以返回单个值、行集或用于比较的表达式。它们可以用于复杂的条件...

    oracle数据库各种功能语句以及驱动

    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@hostname:port/service_name", "username", "password"); ``` 9. 数据库链接(Database Link):数据库链接允许在不同的Oracle实例之间进行...

    oracle case语句的介绍

    在 Oracle 数据库中,CASE 语句是一种非常实用且灵活的条件判断表达式,它可以用于根据不同的条件返回不同的值。CASE 语句可以分为两种类型:简单 CASE 语句和搜索 CASE 语句。 - **简单 CASE 语句**(Simple CASE ...

    ORACLE__SQL语句教学

    本文档旨在为初学者提供一个全面且易于理解的学习指南,重点介绍Oracle SQL中最常用的SELECT语句的基本用法。通过本章的学习,读者能够掌握SELECT语句的基础功能,并能执行简单的数据检索任务。 #### 二、SQL ...

Global site tag (gtag.js) - Google Analytics