`
stone02111
  • 浏览: 214754 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle统计函数学习

 
阅读更多

数据库准备

CREATE TABLE emp (
  deptno int NOT NULL,
  ename varchar(100) DEFAULT NULL,
  sal int DEFAULT NULL
);

insert into emp values (10,'KING',5000);
insert into emp values (10,'CLARK',2450);
insert into emp values (10,'MILLER',1300);
insert into emp values (20,'SCOTT',3000);
insert into emp values (20,'FORD',3000);
insert into emp values (20,'JONES',2975);
insert into emp values (20,'ADAMS',1100);
insert into emp values (20,'SMITH',800);
insert into emp values (30,'BLAKE',2850);
insert into emp values (30,'ALLEN',1600);
insert into emp values (30,'TURNER',1500);
insert into emp values (30,'WARD',1250);
insert into emp values (30,'MARTIN',1250);
insert into emp values (30,'JAMES',950);

 

1.row_number() 的使用

 

原表信息:

select deptno, ename, sal from emp order by deptno, sal desc;

 

   	DEPTNO	ENAME	SAL
1	10	KING	5000
2	10	CLARK	2450
3	10	MILLER	1300
4	20	SCOTT	3000
5	20	FORD	3000
6	20	JONES	2975
7	20	ADAMS	1100
8	20	SMITH	800
9	30	BLAKE	2850
10	30	ALLEN	1600
11	30	TURNER	1500
12	30	WARD	1250
13	30	MARTIN	1250
14	30	JAMES	950

 使用row_number()查出各部门薪水最高的三个员工姓名、薪水,多于三个的只取三个。

   	DEPTNO	RW	ENAME	SAL
1	10	1	KING	5000
2	10	2	CLARK	2450
3	10	3	MILLER	1300
4	20	1	SCOTT	3000
5	20	2	FORD	3000
6	20	3	JONES	2975
7	30	1	BLAKE	2850
8	30	2	ALLEN	1600
9	30	3	TURNER	1500

 体会:row_number() 返回的主要是“行”的信息,并没有按照sal排名,如

        20          1 SCOTT            3000
                    2 FORD             3000
scott与ford薪水一样多,ford前面的2仅仅是行数、记录条数的念。

 

2.rank()、dense_rank() 的使用

 

使用rank()查出各部门薪水前三名的员工姓名、薪水。

 

 select *
   from (select deptno,
                rank() over(partition by deptno order by sal desc) rk,
                ename,
                sal
           from emp)
  where rk <= 3

 

   	DEPTNO	RK	ENAME	SAL
1	10	1	KING	5000
2	10	2	CLARK	2450
3	10	3	MILLER	1300
4	20	1	SCOTT	3000
5	20	1	FORD	3000
6	20	3	JONES	2975
7	30	1	BLAKE	2850
8	30	2	ALLEN	1600
9	30	3	TURNER	1500

 

使用dense_rank()查出各部门薪水前三名的员工姓名、薪水。

 

  select *
    from (select deptno,
                 dense_rank() over(partition by deptno order by sal desc) drk,
                 ename,
                 sal
            from emp)
   where drk <= 3

 

 

   	DEPTNO	DRK	ENAME	SAL
1	10	1	KING	5000
2	10	2	CLARK	2450
3	10	3	MILLER	1300
4	20	1	SCOTT	3000
5	20	1	FORD	3000
6	20	2	JONES	2975
7	20	3	ADAMS	1100
8	30	1	BLAKE	2850
9	30	2	ALLEN	1600
10	30	3	TURNER	1500

 Oracle统计函数(一)--Rank和Dense_Rank

分类:Oracle数据库

聚合函数RANK 和 dense_rank 主要的功能是计算一组数值中的排序值。

在9i版本之前,只有分析功能(analytic ),即从一个查询结果中计算每一行的排序值,是基于order_by_clause子句中的value_exprs指定字段的。

其语法为:

RANK ( ) OVER ( [query_partition_clause] order_by_clause )

在9i版本新增加了合计功能(aggregate),即对给定的参数值在设定的排序查询中计算出其排序值。这些参数必须是常数或常值表达式,且必须和ORDER BY子句中的字段个数、位置、类型完全一致。

其语法为:

RANK ( expr [, expr]... ) WITHIN GROUP
( ORDER BY
expr [ DESC | ASC ] [NULLS { FIRST | LAST }]
[, expr [ DESC | ASC ] [NULLS { FIRST | LAST }]]...
)

分享到:
评论

相关推荐

    oracle内置函数学习

    Oracle还提供了一些统计函数,如AVG()计算平均值,SUM()求和,COUNT()统计数量,MIN()和MAX()找出最小值和最大值。这些统计函数在数据分析和报表生成中发挥着关键作用。 在数据库管理工具方面,Oracle SQL ...

    oracle 分析函数学习笔记

    在描述中提到的场景中,有几种不同的方法可以实现数据统计,包括通过程序处理、使用临时表和包、标准SQL的UNION以及Oracle特有的分析函数。每种方法都有其优缺点。例如,程序处理方法与数据库无关,但增加了开发工作...

    oracle分析函数学习

    - 对于数据挖掘和机器学习任务,分析函数可以帮助进行特征工程,如计算移动平均、标准差等统计特征。 总之,Oracle分析函数是SQL开发中的强大武器,能够处理复杂的数据分析需求,提高查询效率,尤其是在大数据量的...

    ORACLE分析函数大全

    3. **移动统计函数**: - `AVG()`: 计算指定窗口内的平均值,如示例中的`c_mavg`。 - `SUM()`: 窗口内的总和。 - `MIN()`, `MAX()`: 窗口内的最小值和最大值。 - `LEAD()`, `LAG()`: 提取当前行之后或之前的值。...

    oracle日常函数文档

    学习并熟练掌握这些函数,能极大地提升在Oracle数据库中的工作效率,对于初学者来说,这份“Oracle日常函数文档”无疑是一份极好的参考资料,能够帮助快速理解和运用各种函数,从而更好地进行数据管理和分析工作。

    Oracle高级操作函数学习笔记

    Oracle数据库作为一个强大的关系型数据库管理系统,提供了多种高级操作函数来支持复杂的数据处理。以下是从标题、描述和部分内容中提取的Oracle高级操作函数的知识点。 ### 分支判断函数 #### DECODE函数 DECODE...

    ORACLE 分析函数大全

    Oracle 分析函数是一种强大的SQL工具,它允许你在处理数据时执行复杂的分析操作,而不像聚合...参考书籍如Tom Kyte的《Expert One-on-One》和Oracle 9i SQL Reference等,都是深入学习和理解Oracle分析函数的宝贵资源。

    oracle分析函数及开窗函数

    通过本文的学习,我们了解了Oracle中的分析函数及其基本用法,包括常见的分析函数分类、基本语法以及实际应用场景。这些函数的强大之处在于它们能够轻松地处理复杂的数据计算需求,为数据分析提供了极大的便利。掌握...

    ORACLE函数大全与整理

    "函数整理.doc"和"ORACLE函数大全.doc"这两个文档应该包含了Oracle函数的详细说明、示例和应用场景,是学习和查阅Oracle函数的宝贵资料。通过深入学习这些函数,开发者可以更高效地编写SQL查询,优化数据库操作,...

    oracle 内置函数

    在学习和应用这些函数时,一定要注意函数的参数类型、返回值类型以及可能产生的异常情况。同时,Oracle数据库还支持自定义函数,以满足更复杂的数据处理需求。通过不断地实践和探索,你可以更深入地理解和掌握Oracle...

    ORACLE函数大全CHM

    这个“ORACLE函数大全”资源将详细介绍每个函数的语法、参数、返回值和使用示例,是学习和工作中不可或缺的工具。通过深入研究,你可以提高对Oracle数据库操作的理解和应用能力,提升开发和维护数据库的效率。记得...

    Oracle10G函数大全(chm格式的,比较全面)

    Oracle 10G函数大全的文档通常会详细涵盖以上及更多功能,通过学习和熟练掌握这些函数,可以极大地提高你在Oracle数据库管理、查询和开发中的效率。对于数据库管理员和开发者来说,这份资料无疑是一份宝贵的资源。

    Oracle系统函数

    2. **COUNT()**:统计函数,用于计算指定列的行数。如果无参数,将计算整个结果集的行数。 3. **MAX()** 和 **MIN()**:分别用于找出指定列的最大值和最小值。这些函数在数据分析和报表生成中非常有用。 4. **SUM...

    Mysql+Oracle函数文档

    这里,我们主要探讨的是它们的函数用法,通过提供的文档资源——"MySQL_5.1_zh.chm" 和 "oracle函数大全(分类显示).chm",我们可以深入了解这两个数据库系统的函数功能和应用场景。 首先,MySQL 是一款开源、免费的...

    oracle函数

    在学习和应用Oracle函数时,建议结合实际场景进行练习,理解每个函数的用法和返回值类型,同时注意函数间的相互配合,以解决更复杂的查询需求。通过阅读《oracle+110个常用函数.doc》这样的文档,可以系统地学习和...

    Oracle函数列表速查andOracle数据字典

    其次,Oracle数据字典是数据库自身维护的一系列系统表和视图,用于存储关于数据库对象、权限、统计信息等元数据。通过查询数据字典,我们可以获取到关于表、索引、用户、角色等的详细信息。例如,`DBA_OBJECTS`视图...

    Oracle数据库 资料学习

    8. **性能优化**:了解如何使用 Explain Plan 分析查询执行计划,学习SQL优化器的工作原理,以及如何通过索引、分区、统计信息等方式提升查询性能。 9. **数据库设计**:学习关系数据库设计的基本原则,如范式理论...

    【转】Oracle分析函数简述

    Oracle分析函数是数据库管理系统...通过阅读“oracle分析函数.doc”和“oracle_10g分析函数最终版.pdf”这两个文档,你可以深入学习更多关于Oracle分析函数的用法和实例,进一步提升你在数据库管理领域的专业技能。

    sql21天自学通和oracle常用函数集锦

    4. **聚合函数**:COUNT()计算行数,SUM()求和,AVG()计算平均值,MAX()和MIN()找出最大和最小值,这些函数常用于统计分析。 5. **Oracle特定函数**:Oracle数据库提供了许多特有的函数,如DECODE()用于条件判断,...

Global site tag (gtag.js) - Google Analytics