添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

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

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
一般地:有意义的计数首先都需要去除重复,然后再进行count()计数!这个时候就去重的逻辑就显得尤为重要!一、首先说说我个人对以下两个函数的理解sum()是基于分组,也就是说有sum()的SQL语句中必须要有group by关键字,而count()可不必基于分组,二者在大多数情况下用以实现计数,但不同于count()的是,sum()内的字段必须要为number类型,常用于金额等数据的汇...
--------------------  原作者:搬长城的红砖  原文:https://blog.csdn.net/yin_jia_521/article/details/72626182 oracle 数据库多字段 去重 方法介绍:distinct 关键字、group by  、row_number ()over(partition by 列 order by 列 desc) 我的需...
,d.fname_l1 , count (1) over(partition by b.FNAME_L2,d.fname_l1) 数量 from t_gl_voucherentry a1 ,t_gl_voucher a ,t_org_company b ,t_bd_period c ,t_pm_user d where a1.Fbillid=a.fid and a.fcompanyid=b.fi select distinct column from table; (2)、 统计 去重 数量 select count (distinct column) from table;–查 去重 数量 (3)、distinct必须放在开头 select id, distinct name from A; --会提示错误,因为distinct必须放在开...... 2. 使用 GROUP BY 关键字 使用 GROUP BY 语句可以按照指定的列对结果 进行 分组,并且返回每个组的汇总信息。因为分组操作会自动去除重复项,所以也可以用来 去重 。 例如,以下 SQL 语句可以从表中选择唯一的城市名称,并 统计 每个城市的客户 数量 : SELECT city, COUNT (*) FROM customers GROUP BY city; 3. 使用 ROW_NUMBER() 函数 ROW_NUMBER() 函数会为每个行分配一个唯一的序号,可以利用这个特性来 去重 。 例如,以下 SQL 语句可以从表中选择唯一的城市名称,并且只选择每个城市的第一条记录: SELECT city, customer_name, phone FROM ( SELECT city, customer_name, phone, ROW_NUMBER() OVER (PARTITION BY city ORDER BY customer_name) AS rn FROM customers WHERE rn = 1;