ORACLE分析函数笔记

oracle官网文档中,分析函数的标准语法如下:

analytic_function(arg1,arg2) over(analytic_clause)

1.analytic_function为分析函数

2.arg1,arg2为分析函数的参数

3.over用来标识函数是一个分析函数

4.analytic_clause用来确定分析函数的操作规则,包括query_partition_clause/order_by_clause/windowing_clause3个子句。

select t.employee_id,
       t.department_id,
       t.hire_date,
       t.salary,
       round(avg(t.salary) over(partition by t.department_id)) avg_salary,
       round(sum(t.salary) over(partition by t.department_id)) sum_salary,
       round(max(t.salary) over(partition by t.department_id)) max_salary,
       round(min(t.salary) over(partition by t.department_id)) min_salary,
       round(count(t.salary) over(partition by t.department_id)) conut_salary
  from employees t
 where t.department_id in (10, 30, 50, 60);

--range具体用法

 select t.employee_id,
       t.department_id,
       t.hire_date,
       t.salary,
      --sum(t.salary) over(partition by t.department_id) sum_salary_part_order
      sum(t.salary) over(partition by t.department_id order by t.hire_date range between unbounded preceding and 365/*value_expr*/ preceding) sum_1,
      sum(t.salary) over(partition by t.department_id order by t.hire_date range between unbounded preceding and 365/*value_expr*/ following) sum_2
  from employees t
 where t.department_id in (10, 30, 50, 60);

rows和range不同在于range是逻辑范围,rows是物理范围。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值