Oracle去重后再进行count()计数

您所在的位置:网站首页 按条件去重统计函数 Oracle去重后再进行count()计数

Oracle去重后再进行count()计数

#Oracle去重后再进行count()计数| 来源: 网络整理| 查看: 265

一般地:有意义的计数首先都需要去除重复,然后再进行count()计数!

这个时候就去重的逻辑就显得尤为重要!

一、首先说说我个人对以下两个函数的理解

sum()是基于分组,也就是说有sum()的SQL语句中必须要有group by关键字,而count()可不必基于分组,二者在大多数情况下用以实现计数,但不同于count()的是,sum()内的字段必须要为number类型,常用于金额等数据的汇总。而count()则可以为varchar2类型的字段。用于统计以count()内的字段为列的总记录数。

二、应用实例

需求: 分别统计拥有份额的客户总数,以及客户下的机构、自然人的数量。

前提条件:份额表记录客户的多条数据,但是有体现唯一客户的字段c_fundacco,单纯的使用count(a.c_fundacco)显然存在重复的问题。这个时候去重关键字distinct就显得尤为重要了!

SQL语句实现:

select count(distinct(a.c_fundacco)) f_sumcount, /*统计总人数是对唯一标识c_fundacco进行去重*/ count(distinct decode(b.c_custtype, '0', a.c_fundacco, null)) f_orgcount,/*统计机构时先以客户类型decode归类,再进行去重计数*/ count(distinct decode(b.c_custtype, '1', a.c_fundacco, null)) f_percount/*类似机构*/ from tshares a, tclientinfo b where a.c_clientinfoid = b.c_clientinfoid

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3