一 . 分析函数
1. row_number
用法说明:row_number 为有序组中的每一行返回一个唯一的排序值,序号由ORDER BY 子句指定,从1开始
语法: row_number() over ([partition by column] roder_by_clause)
[b]举例:scott模式下的emp 表
SQL> select * from emp
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- ---------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
使用函数 row_number 按工资排序编个号:-),看看谁第一。(注:工资相同的排名也不相同)
SQL> select ename,job,deptno,sal,row_number()over (order by sal desc) as sal_rank from emp;
ENAME JOB DEPTNO SAL SAL_RANK
-------------------- ------------------ ---------- ---------- ----------
KING PRESIDENT 10 5000 1
SCOTT ANALYST 20 3000 2
FORD ANALYST 20 3000 3
JONES MANAGER 20 2975 4
BLAKE MANAGER 30 2850 5
CLARK MANAGER 10 2450 6
ALLEN SALESMAN 30 1600 7
TURNER SALESMAN 30 1500 8
MILLER CLERK 10 1300 9
WARD SALESMAN 30 1250 10
MARTIN SALESMAN 30 1250 11
ADAMS CLERK 20 1100 12
JAMES CLERK 30 950 13
SMITH CLERK 20 800 14
下面看看在同一个部门下进行比比看谁的工资高:-)。(注:工资相同的排名也不相同)
SQL> select ename,job,deptno,sal,row_number() over (partition by deptno ORDER BY sal desc) ral_rank from emp;
ENAME JOB DEPTNO SAL RAL_RANK
-------------------- ------------------ ---------- ---------- ----------
KING PRESIDENT 10 5000 1
CLARK MANAGER 10 2450 2
MILLER CLERK 10 1300 3
SCOTT ANALYST 20 3000 1
FORD ANALYST 20 3000 2
JONES MANAGER 20 2975 3
ADAMS CLERK 20 1100 4
SMITH CLERK 20 800 5
BLAKE MANAGER 30 2850 1
ALLEN SALESMAN 30 1600 2
TURNER SALESMAN 30 1500 3
WARD SALESMAN 30 1250 4
MARTIN SALESMAN 30 1250 5
JAMES CLERK 30 950 6
2. rank
[b] 用法说明:rank 函数计算一个值在一组值中的排位,排位是以1开头的连续整数。具有相等值的行排位相同,序数随后跳跃相应的数值,即:如果两行的序数为1,则没有序数2,下一行的序号为3.
语法:rank () over([partition by colunm] order_by_clause)[/b]
由于用法和row_number 想象(“具有相等值的行排位相同,序数随后跳跃相应的数值”就这点不同),这里只简单举例如下:
SQL> select ename,job,deptno,sal,rank () over (partition by deptno order by sal desc) denserank from emp;
ENAME JOB DEPTNO SAL DENSERANK
-------------------- ------------------ ---------- ---------- ----------
KING PRESIDENT 10 5000 1
CLARK MANAGER 10 2450 2
MILLER CLERK 10 1300 3
SCOTT ANALYST 20 3000 1
FORD ANALYST 20 3000 1
JONES MANAGER 20 2975 3
ADAMS CLERK 20 1100 4
SMITH CLERK 20 800 5
BLAKE MANAGER 30 2850 1
ALLEN SALESMAN 30 1600 2
TURNER SALESMAN 30 1500 3
WARD SALESMAN 30 1250 4
MARTIN SALESMAN 30 1250 4
JAMES CLERK 30 950 6
分享到:
相关推荐
迁移过程中,重要的是理解每个Oracle函数在PostgreSQL中的等价物,或者通过orafce提供的函数来模拟。这涉及到对两个数据库系统特性的深入理解,包括它们的数据类型、函数行为以及SQL语法差异。 在进行数据库迁移时...
1.round函数(四舍五入) 描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果 参数: number : 欲处理之数值 decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 ) select round(123.456, ...
Oracle 中实现 Split 函数功能 Oracle 中实现 Split 函数功能是指在 Oracle 数据库中实现类似于 C# 等编程语言中的 Split 函数,用于拆分字符的功能。下面是实现 Oracle 中 Split 函数功能的详细介绍。 首先,...
ORACLE内置函数,相当于C语言中的库函数,提供了常规数据库编程中所需的绝大多数基本功能,并且通过函数的组合或嵌套使用,可以发挥其强大的功能。由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码...
其中,Oracle的分析函数是其强大的特性之一,它允许用户在单个SQL查询中执行复杂的分析操作,而无需使用子查询或者自连接。这篇文档将深入探讨Oracle中的分析函数,帮助你更好地理解和利用这一功能。 一、什么是...
以下是一些Oracle数据库中常用内置函数的详细说明: 1. **数字函数**: - `ABS(n)`:返回给定数值的绝对值,例如`ABS(-100)`返回100。 - `ACOS(n)`:返回弧度值,为n的反余弦,如`ACOS(3)`返回约1.26610。 - `...
oracle函数介绍 1 著名函数之单值函数 pdf oracle函数介绍 2 非著名函数之单值函数 pdf oracle函数介绍 3 著名函数之聚合函数 pdf oracle函数介绍 4 非著名函数之聚合函数 pdf oracle函数介绍 5 分析函数简述 ...
DATEADD 函数是 Oracle 日期处理函数中非常重要的一部分,它可以方便地添加指定的时间间隔到日期中,并且可以应用于各种日期处理场景。然而,DATEADD 函数也存在一些限制,例如只能添加指定的时间间隔到日期中,不能...
在 Oracle 中,递归函数的定义语法如下所示: ```sql CREATE FUNCTION function_name ([parameter_list]) RETURN return_type {IS|AS} BEGIN ... ... END [function_name]; ``` 其中,`function_name` 是函数...
以下是关于Oracle函数的一些详细说明: 1. ASCII函数:ASCII函数返回与输入字符相对应的ASCII码,即十进制数字。例如,ASCII('A')返回65,ASCII('a')返回97。 2. CHR函数:CHR函数根据提供的整数返回对应的字符。...
在Oracle数据库中,`CRC32`函数是一种非常实用的功能,主要用于将字符类型的数据转换为一个唯一的数字类型,这一过程通常被称为散列(Hash)。通过该函数,可以方便地生成针对特定字符串的固定长度的数字签名,这...
### Oracle分析函数详解 #### 一、Oracle分析函数概述 Oracle分析函数是在处理大量数据时极为有用的一套工具,主要...在实际应用中,根据具体的业务需求选择合适的分析函数,可以极大地提高数据分析的准确性和效率。
Oracle函数是数据库操作中的核心组成部分,它们允许开发人员和DBA执行各种计算、转换、查询和数据处理任务。手册中可能涵盖了以下几类函数: 1. 数学函数:如ABS(取绝对值)、MOD(取模)、ROUND(四舍五入)等,...
oracle中的函数集合 SQL中的单记录函数、系统函数。Decode函数的语法结构如下: decode (expression, search_1, result_1) decode (expression, search_1, result_1, search_2, result_2) decode (expression, ...
"Oracle函数大全(CHM格式).rar"这个压缩包显然包含了关于Oracle数据库中各种函数的详细信息,对于学习和查询Oracle函数是非常宝贵的资源。 CHM(Compiled Help Manual)格式是一种由Microsoft开发的帮助文件格式...
oracle 的存储过程和函数的语法 如下
Oracle内置函数是数据库管理系统Oracle中不可或缺的一部分,它们用于执行各种数据处理任务,包括数学运算、字符串操作、日期处理等。这篇博文将深入探讨Oracle内置函数的学习,帮助你更好地理解和运用这些功能强大的...
Oracle函数.chm
### ORACLE操作XML函数 #### 一、XMLTYPE_instance与XPath_string 在Oracle数据库中,`XMLTYPE`是一...这些函数提供了强大的工具来操作和管理Oracle数据库中的XML数据,使得开发者能够更加灵活地处理复杂的XML结构。
Oracle自定义函数返回一张表。主要用于生成一张等时间间隔的表数据。