Oracle——常用统计汇总分析

1.avg()

求平均值

求指定列的平均值,如果求多个列的平均值需要多个avg()

实例:

select avg(t.c1) from hjj t where t.name='SD.MY';

指的是在hjj这个表当中当name字段等于'SD.MY'时,c1列的平均值 

2.count()

统计指定列的行数

实例:

select count(*),count(t.c1) from hjj t where t.name='SD.MY';

 在上句当中,假如一个表当中,即使表中的c1列有为空的部分,则利用count(*)也会将所有的列的数量统计出来,包含了空的部分,但是如果用count(c1)的话,只会将c1有值的部分统计出来。

3.max()、min()

求最大值、最小值

实例:

select max(t.c1),min(t.c1)from hjj t;

提取出c1列中的最大值 、最小值

4.sum()

求一列的和

实例:

select sum(t.c1) from hjj t;

5.wm_concat()

转字符合并

①把以下图中Name一样的数据合并为一条,而且NO的值要这样显示如 C.1,C.2

②实现这种效果的操作如下,先把Name的值进行分组(group by),再把NO的值用 wm_concat()函数合并起来(注意:记得要to_char(),要不然数据显示不出来,而且会显示成<CLOB>)

实例:

select t.name,to_char(wm_concat(distinct(t.nos))) from hjj_wm_concat group by t.name;
安全管理c1,c2,c5
文明施工c3,c4

 

6.distinct()

去重函数,在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。

可用于单列去重

select distinct name from A

可多列去重

  select  distinct name,id from A

例如:

根据第三个表格可以理解为是name 和id两个字段共同作用的结果,可以理解为唯一映射

7.group by rollup()

Oracle group by高级用法对比效果(ROLLUP、GROUPING SETS、CUBE),今天主要跟大家演示一下,在同一组数据的情况下,每个SQL的执行结果。

     ①:普通的group by

       

 

       ②:加上ROLLUP

      

        ③:加上CUBE

      

     ④:加上GROUPING SETS

     

       总结如下:

ROLLUP

GROUP BY ROLLUP(A,B,C)

首先对(A,B,C)进行GROUP BY,然后对(A,B)进行GROUP BY,然后是(A)进行GROUP BY, 最后对全表进行GROUP BY操作

CUBE

GROUP BY

 CUBE(A,B,C)

首先对(A,B,C)进行GROUP BY,然后依次对(A,B)、(A,C)、(A)、(B,C)、(B)、(C)进行GROUP BY,最后对全表进行GROUP BY操作。

GROUPING SETS

GROUP BY 

GROUPING SETS(A,B,C)

依次对(C)、(B)、(A)进行GROUP BY。

另外,在SQL中可以直接用加减乘除语句进行运算

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金哥的小超人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值