`
taiwei.peng
  • 浏览: 236814 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle 分析函数

阅读更多

row_number() over(partition by ... order by ...)  

rank() over(partition by ... order by ...)  

dense_rank() over(partition by ... order by ...)  

count() over(partition by ... order by ...)  

max() over(partition by ... order by ...)  

min() over(partition by ... order by ...)  

sum() over(partition by ... order by ...)  

avg() over(partition by ... order by ...)  

first_value() over(partition by ... order by ...)  

last_value() over(partition by ... order by ...)  

lag() over(partition by ... order by ...)  

lead() over(partition by ... order by ...)  

 

rank()和dense_rank()的区别是:  

rank()是跳跃排序,有两个第二名时接下来就是第四名  

dense_rank()是连续排序,有两个第二名时仍然跟着第三名  

 

例子:

SELECT emp.full_name,

       emp.salary,

       emp.manager_id,

       row_number() over(PARTITION BY emp.manager_id ORDER BY emp.salary DESC) row_number_dept, --部门排行

       rownum row_number, --行号

       round((rownum + 1) / 4) page_number, --每4行一页

       ntile(2) over(ORDER BY emp.salary DESC) page_number_nt, --平均分成两类

       

       AVG(emp.salary) over(PARTITION BY emp.manager_id) avg_salary_department, --该部门薪水均值

       SUM(emp.salary) over(PARTITION BY emp.manager_id) sum_salary_department, --该部门薪水总额

       COUNT(emp.salary) over(PARTITION BY emp.manager_id) count_emp_department, --部门所有的员工

       dense_rank() over(PARTITION BY emp.manager_id ORDER BY emp.salary DESC) rank_salary_dept, --该人员的部门薪水排行

       dense_rank() over(ORDER BY emp.salary DESC) rank_salary_company, --该人员的全公司排行

       

       MIN(emp.salary) over(PARTITION BY emp.manager_id) min_salary_dept, --部门的最低薪水       

       MIN(emp.salary) keep(dense_rank FIRST ORDER BY emp.salary) over(PARTITION BY emp.manager_id) min_salary_dept_first, --部门的最低薪水

       first_value(emp.salary) over(PARTITION BY emp.manager_id ORDER BY emp.salary) min_salary_dept_firstv, --部门的最低薪水     

       

       MAX(emp.salary) over(PARTITION BY emp.manager_id) max_salary_dept, --部门的最高薪水 

       MAX(emp.salary) keep(dense_rank LAST ORDER BY emp.salary) over(PARTITION BY emp.manager_id) max_salary_dept_last, --部门的最高薪水 

       last_value(emp.salary) over(PARTITION BY emp.manager_id ORDER BY emp.salary) max_salary_dept_lastv, --部门的最高薪水

       

       lag(emp.full_name, 1, '00') over(ORDER BY emp.salary DESC) last_persion, --薪水在自己前一位的人

       lead(emp.full_name, 1, '00') over(ORDER BY emp.salary DESC) next_persion --薪水在自己后一位的人

  FROM fwk_tbx_employees emp

ORDER BY emp.salary DESC;

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    ORACLE分析函数教程

    ### Oracle分析函数详解 #### 一、Oracle分析函数概述 Oracle分析函数是在处理大量数据时极为有用的一套工具,主要用于在线分析处理(OLAP)场景。这类函数可以在多个级别上进行数据聚合,并支持复杂的排序、分组...

    oracle分析函数文档

    ### Oracle分析函数详解 #### 一、概述 Oracle分析函数是一种强大的工具,它允许用户对分组数据执行复杂的计算,并且结果可以根据特定条件进行动态调整。这种灵活性使得Oracle分析函数在处理复杂的数据集时非常...

    ORACLE分析函数大全

    Oracle分析函数是数据库管理系统Oracle中的一个强大特性,它允许用户在SQL查询中执行复杂的分析操作。分析函数在处理报表和数据迁移任务时尤其有用,因为它们可以基于分组计算聚合值,并为每个分组返回多行,而不...

    oracle分析函数(用法+实例)

    Oracle 分析函数(用法+实例) Oracle 分析函数是 Oracle 8.1.6 版本中引入的高级应用,属于 Oracle 的一大亮点。分析函数可以分为四大类:排名函数、聚合函数、行比较函数和统计函数。下面将对分析函数的原理、...

    ORACLE 分析函数大全

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

    Oracle分析函数

    Oracle 分析函数详解 Oracle 分析函数是 Oracle 数据库中的一种强大功能,能够帮助用户快速进行数据分析和处理。在本文中,我们将对 Oracle 分析函数进行详细的介绍,并对其各个函数进行解释。 一、总体介绍 ...

Global site tag (gtag.js) - Google Analytics