sql语句问题,如何在多表关联下,在重复数据里面,根据某一个唯一的值,sum另一个值的和。
 select distinct cl.description 数据批次,
 s.rolegroupdescription 拨打小组,
 count(distinct oj.customer_guid)分配数量,
sum(case when t1.calltype=2 and t1.stringfield1='CTI' then 1 else 0 end) 拨打次数,
count(distinct case when t4.calltype=2 then t1.customer_guid end) 接通客户数,
sum(case when t4.calltype=2then 1 else 0 end) 接通个数,
sum(case when t1.calltype=2 and t1.stringfield1='CTI'  and floor((t4.endtime- t4.starttime)*24*60)>1 then 1 else 0 end) 一分钟以上个数,
count(distinct co.appl_no) 成交件数,
sum(distinct year_premium) 成交业绩
from customer c
left join (select * from gd_ods_core where cntr_stat in ('K','L','M')) co on co.mobile=c.mobile
inner join objective oj on oj.customer_guid=c.customer_guid
left join event t1 on c.customer_guid=t1.customer_guid
inner join custlists cl on c.stringfield1= cl.custlist_xxx
inner join gd_temp_staff s on oj.tlallot =s.staff_id
inner join (Select customer_guid,max(createddate) as maxcreateddate from objective where tlallot is not null group by customer_guid)L
on oj.customer_guid=L.customer_guid and oj.createddate=L.maxcreateddate
left join record t4 on t4.customer_guid = t1.customer_guid and t4.event_guid = t1.event_guid and t4.staff_id = t1.handleby_id
where
cl.CustList_xxx='CustList_jtkh20170623hh32'
group by cl.description,s.rolegroupdescription
order by cl.description

现在问题是最后取成交金额sum(year_premium) 这里,因为数据重复,所以直接sum会大很多,但如果直接sum(distinct year_premium),会导致不同成交件,但相同交易金额的数給剔除,那就造成金额少了。
gd_ods_core成单表本身是唯一,但由于统计数据的要求,关联了电话拨打表“event”数据分配表“objective”和电话录音表“record”,客户电话拨打得越多,重复数量就越多,如果直接select 成单表gd_ods_core的话,要统计分配数量、拨打次数、接通次数就不准。
请帮忙提供如何根据appl_no(唯一单号)来sum year_premium(业绩金额)
或提供完全不同逻辑
sum(distinct year_premium的情况)
sum(year_premium的情况
两个图都没办法准确统计业绩金额。

3个回答

sum另一个值是指的什么

weixin_39703096
weixin_39703096 标题而已,解释在内容说了,根据唯一appl_no来sum (year_premium)
2 年多之前 回复

其实我觉得你distinct 这个 year_premium 本身逻辑就是错的,你应该distinect 的是appl_no这个

weixin_39703096
weixin_39703096 我知道,但没有办法的话,distinct year_premium 是最接近准确的,我试过sum(case when appl_no in (select distinct appl_no from gd_ods_core) then year_premium end),同样还是叠加计算了重复成交单的成交单金额,只能适用成交单号appl_no唯一时,不同成交单相同金额的叠加计算。
2 年多之前 回复

应该 直接avg(sum (year_premium) ) 就好了,你试试

weixin_39703096
weixin_39703096 提示不能单组分组函数,而且我并不是求平均值,是要求每张成单金额的和。就算求平均值,这个平均值也不对的,因为会计算了重复成单的金额。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐