oracle avg分析函数,分析函数之sum,avg

看看26楼的这句话:

看来oracle在提取数据库的时候是按over(partition by ... order by ...)这个里边的partition by 和 order by后边的字段的一个个distinct值取出数据的。

仔细理解理解一下。

5f60efcaccfa40b26873a6a9cb266119.gif

SQL> select * from t;

A          B          C                   D

---------- ---------- ---------- ----------

1          111        G                  87

1          111        G                  87

1          222        G                  85

1          222        G                  86

2          111        G                  80

2          111        G                  80

2          222        G                  81

2          222        G                  80

8 rows selected

只有partition by a,distinct a有2个值1和2:分2次提取数据

为1的提取一次,4条a值相同,4条平均86.25

为2的提取一次,4条a值相同,4条平均80.25

SQL> select a,b,c,avg(d) over(partition by a ),d from t;

A          B          C          AVG(D)OVER(PARTITIONBYA)          D

---------- ---------- ---------- ------------------------ ----------

1          111        G                             86.25         87

1          111        G                             86.25         87

1          222        G                             86.25         85

1          222        G                             86.25         86

2          111        G                             80.25         80

2          111        G                             80.25         80

2          222        G                             80.25         81

2          222        G                             80.25         80

8 rows selected

partition by a,order by b,distinct a,b有4个值:

1---111

1---222

2---111

2---222

分四次提取数据:

1---111:取出2条,a=1的2条取平均87

1---222:取出2条,a=1的4条取平均86.25

2---111:取出2条,a=2的2条取平均80

2---222:取出2条,a=2的4条取平均80.25

SQL> select a,b,c,avg(d) over(partition by a order by b ),d from t;

A          B          C          AVG(D)OVER(PARTITIONBYAORDERBY          D

---------- ---------- ---------- ------------------------------ ----------

1          111        G                                      87         87

1          111        G                                      87         87

1          222        G                                   86.25         85

1          222        G                                   86.25         86

2          111        G                                      80         80

2          111        G                                      80         80

2          222        G                                   80.25         81

2          222        G                                   80.25         80

8 rows selected

SQL>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值