[求助]关于oracle分组后组外排序的问题
只用查询语句实现:
DEPTNO ENAME SAL TOP3
---------- ---------- ---------- ----------
20 KING 5000 1
20 CLARK 2450 2
20 MILLER 1300 3
10 SCOTT 3000 1
10 FORD 3000 2
10 JONES 2975 3
30 BLAKE 2850 1
30 ALLEN 1600 2
30 TURNER 1500 3
按部门分组,部门内部的sal降序,部门间按每个部门sal最大值(粗体字)降序,该如何实现 ,请教各位高手!!谢谢!!
------------------------------------------------------------------------------------------------------------------------------------------
回复:[求助]关于oracle分组后组外排序的问题
selelct t1.*
from (select DEPTNO ,ENAME ,SAL , row_number() over(partition by deptno order by sal desc) top3 from tableName) t1,
(select rownum seq,depno from (select deptno ,max(sal) from tablename group by depno order by max(sal) desc)) t2
where t1.deptno=t2.deptno order by t2.seq,t1.sal desc;
分享到:
相关推荐
#### 一、Oracle分组排序和统计概述 在Oracle数据库中,实现分组排序和统计是一项常见的需求,主要用于处理大量的数据,并从中提取有价值的信息。通过合理运用SQL语句,特别是`GROUP BY`、`ORDER BY`以及分析函数等...
Oracle 中分组后拼接分组字符串 在 Oracle 中,分组后拼接分组字符串是一种常见的操作,用于将分组后的多条记录的某字段进行拼接。下面我们来详细介绍如何实现这种操作。 首先,创建一个测试表 `test`,该表包含三...
上面语句表示,根据col1分组,在分组内部根据col2排序,这里的“别名”的值就是每组内部排序后的序列号(组内连续的、唯一的),“[partition by col1] ”可以省略。
标题中的“Oracle实现对查询结果每N条再次分组”是指在Oracle数据库中进行数据处理时,使用SQL语句对查询结果进行分组,而这里的“每N条再次分组”通常指的是使用GROUP BY子句配合ROW_NUMBER()、PARTITION BY等函数...
使用`MODEL`指令需要对Oracle SQL有深入理解,但能解决一些其他方法无法处理的复杂问题。 在实际应用中,选择哪种方法取决于具体的需求、数据结构以及Oracle数据库的版本。例如,如果只需要简单的字符串连接,`...
在Oracle数据库中,处理数据类型和行排序是两个非常关键的操作。Oracle支持多种数据类型,这些数据类型用于存储各种类型的信息,如数字、文本、日期等。了解并熟练掌握这些数据类型对于有效管理和操作数据库至关重要...
在Crystal Reports中,分组和排序是数据呈现的关键步骤,特别是在C#.NET环境中,通过Visual Studio.NET进行开发时。这篇文章将深入探讨如何使用C#.NET编写源代码来实现这一功能。 首先,理解水晶报表(Crystal ...
首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。 select id, (@rowno := @rowno + 1) as rank, score, (C.end_ti
本资料集主要涵盖了Oracle中的常用SQL语句以及在实际应用中可能遇到的常见问题及其解决策略。 1. **SQL基本操作**: - **SELECT语句**:用于从表中选择数据。例如,`SELECT * FROM table_name;` 将获取表中的所有...
在分组和排序中,`rownum`可以用来限制返回的结果数量,如获取每个组的前N条记录。但要注意,`rownum`在`order by`子句之前计算,因此必须结合子查询或`analytic function`来精确控制排序后的行号。 6. **Wm_concat...
3. **SELECT查询**:Oracle SQL的查询语法丰富,可以使用WHERE子句进行条件过滤,GROUP BY和HAVING子句进行分组统计,ORDER BY子句进行排序,以及JOIN操作连接多个表。 4. **视图**:视图是虚拟表,基于一个或多个...
其中,SELECT用于定义要查询的列,FROM指定要查询的表,WHERE用于设定查询条件,GROUP BY用于数据分组,HAVING用于分组后的过滤,ORDER BY则用于结果排序。 接着,PPT可能会详细介绍Oracle的高级查询技巧,如联接...
4. **查询操作**:SELECT语句是SQL的核心,可以组合使用WHERE子句进行条件过滤,GROUP BY进行分组,HAVING进行分组后的过滤,ORDER BY进行排序,以及JOIN操作连接多个表进行复杂查询。 5. **子查询与联接**:子查询...
了解SQL的子查询、联接、聚合函数(如COUNT、SUM、AVG)以及分组和排序(GROUP BY、ORDER BY)对于日常操作至关重要。 3. 表和索引: 创建表时,需要定义列的数据类型、约束条件(如NOT NULL、UNIQUE、FOREIGN KEY...
### Oracle Report Builder 教程详解 #### 一、Oracle Report Builder 概述 Oracle Report Builder 是一款强大的报表开发工具,隶属于 Oracle Developer/2000 R2.0 的产品线,专为基于数据库的报表设计与开发而生...
它可以包括各种子句,如WHERE(筛选条件),GROUP BY(分组),HAVING(分组后的筛选),ORDER BY(排序),以及JOIN(联接)操作。 3. **数据类型**: Oracle 10G支持多种数据类型,包括数值类型(如NUMBER,...
- `RANK()`, `DENSE_RANK()` 和 `ROW_NUMBER()`:在分组后为每行分配唯一的排名。 7. **连接查询函数** - `JOIN`:将两个或更多表的数据连接在一起。 - `INNER JOIN`, `LEFT JOIN`, `RIGHT JOIN`, `FULL OUTER ...
Oracle LISTAGG 函数是 Oracle 11.2 中引入的一种新特性,主要功能类似于 wmsys.wm_concat 函数,即将数据分组后,把指定列的数据再通过指定符号合并。LISTAGG 函数有两个参数:要合并的列名和自定义连接符号。 ...
可以使用WHERE子句过滤结果,GROUP BY进行分组,HAVING筛选分组后的结果,ORDER BY进行排序,以及JOIN操作连接多个表。 三、数据类型 Oracle支持多种数据类型,包括数值型(如NUMBER、INTEGER)、字符串型(如...