Oracle去重后再进行count()计数的操作实例

一般地:有意义的计数首先都需要去除重复,然后再进行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

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐