--COUNT , 如果数据库表的没有数据,count(*)返回的不是 null,而是 0
-- Avg,max,min,sum
--可使用 NVL()函数强制分组函数处理空值
select avg(nvl(comm, 0)) from emp;
--不允许在 WHERE 子句中使用分组函数。
select deptno, avg(sal)
from emp
where avg(sal) > 2000;
group by deptno;
--select 字段列表 from 表名 +where 子句 +group by 子句 +having 子句 +order by 子句
select deptno, job, avg(sal)
from emp
where hiredate >= to_date('1981-05-01','yyyy-mm-dd')
group by deptno,job
having avg(sal) > 1200
order by deptno,job;
--TopN查询
select * from emp where rownum=1 or rownum=2;
--1.排序,列出所有记录或前N条记录
select * from (select * from emp order by sal desc)
where rownum <= 5;
--2.排序,列出指定区间的记录
select 字段列表
from (select 字段列表 from 表名 order by 排序字段)
where rownum>=11 and rownum<=15
毫无疑问,这句查询语句执行后不会有任何结果。
首先rownum是ORACLE在我们查询时自动生成的一个从1开始计数的伪列(就是一个虚假的列,看起来不存在,但是却实实在在存在)
这个伪列的产生机理是这样:当我们进行查询操作时,数据库的记录一条一条拿出,并给词条记录自动生成伪列rownum,这里强调一下:rownum是从1开始计数的。
这里的查询条件有两个:rownum>=11 和rownum<=15,查询出的rownum是从1开始计数的,也就是拿出的记录rownum=1.它满足rownum<=15但是不满足rownum>=11。所以被无情的抛弃了。紧接着再拿出一条数据,结果当然还是被抛弃。
--总结一下其核心思想:就是将伪列rowno想办法实例为一个可操作的固有列,通过这个固有列来达到TOP N分析的第二种实现。
select * from(select rownum myno,a.* from (select * from emp order by sal desc) a) b where myno>=5 and myno<=10;
select * from (select rownum no,e.* from (select * from emp order by sal desc) e where rownum<=10 ) where no>=5;
--以上查询也是分页查询的例子
分享到:
相关推荐
5. **其他函数**:如`TOP/BottomN`, `First/Last`, `NTILE`等,这些函数提供更高级的分析功能。 #### 四、Oracle分析函数示例 1. **使用`RANK()`函数** ```sql SELECT employee_id, salary, department_id, ...
Oracle 分析函数、窗口函数和报表函数是数据库查询和数据分析中的关键工具,尤其在复杂的OLAP(在线分析处理)系统中发挥着重要作用。在Oracle数据库中,这些功能提供了对大量数据进行高效处理的能力,帮助用户生成...
#### 二、Oracle分组求Top N的方法 **1. 使用`RANK()`函数** - **基本语法**: `RANK()`函数可以用来计算行在某一组中的排名。它会按照`ORDER BY`子句中的规则对行进行排序,并为每一行分配一个排名。 ```sql ...
- Top N和Bottom N用于选取数据集中的前N条或后N条记录,可以结合RANK或ROW_NUMBER实现。 - First/Last函数可以找到每个分组的第一个或最后一个值,这在处理时间序列数据或追踪变化时非常有用。 - NTILE将结果集...
Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,主要用于处理大量数据并进行复杂的统计和分析。它们在OLAP(在线分析处理)系统中尤其重要,因为这类系统常常涉及大规模的数据查询、汇总和复杂的业务...
综上所述,Oracle分析函数提供了更高效的数据处理方式,尤其是在处理top-n查询、分组计算、排名等问题时。通过合理地使用分析函数并配合索引优化,可以显著提升查询性能,降低系统资源消耗。在实际工作中,理解并...
- **Top/Bottom N, First/Last, NTile**: 这些函数用于选取数据集中的前N个或后N个记录,`FIRST/LAST`则用于获取每个分组的第一行或最后一行,`NTILE`将数据分割成N个等大小或近似等大小的部分。 **3. 窗口函数** ...
分析函数3(Top/Bottom N、First/Last、NTile);窗口函数;报表函数;分析函数总结;26个分析函数;PLSQL开发笔记和小结;分析函数简述 ROW_NUMBER () OVER([partition_clause] order_by_clause) dense_rank在做排序时...
Oracle分析函数是数据库查询中的重要工具,主要用于处理复杂的聚合和排序操作,特别是在OLAP(在线分析处理)系统中,它们能够高效地进行数据汇总和分析。分析函数与聚合函数(如SUM, AVG, COUNT等)有所不同,聚合...
包含Oracle常用的高级函数,比如取前N名,每个分组的前N名等。 详细介绍Oracle分析函数(OVER、Rank、Dense_rank、row_number、Top/Bottom N、First/Last、NTile) ,窗口函数,报表函数
- 分析函数主要分为以下几类:排名函数(Rank, Dense_Rank, Row_Number)、分组函数(如Percent_Rank, Cume_Dist)、移动平均函数(Moving_Average)、累积和/积函数(Cumulative_Sum, Cumulative_Product)以及...
Oracle分析函数是数据库查询中的重要工具,特别是在处理复杂的分组和排序问题时。在Oracle中,分析函数可以让我们在聚合数据的同时保持原始行的信息,这对于数据挖掘和报表生成非常有用。本文将详细介绍如何使用分析...
通过上述介绍,我们可以看出虽然Oracle不支持直接的`SELECT TOP`语法,但通过使用`ROWNUM`和`ROW_NUMBER()`窗口函数可以轻松地实现类似的功能。这两种方法各有优缺点,具体使用哪种取决于实际需求以及性能考量。例如...
Oracle分析函数是数据库查询中的重要工具,主要用于处理复杂的分组和排序问题,尤其在数据分析和报表生成中极为关键。分析函数允许我们在一个数据集上执行计算,并根据预定义的窗口或分区进行操作,而不像聚合函数...