oracle sql sum 根据一个唯一字段计算某个字段的和
我想通过pl/sql查询得出结果selectdescription,rolegroupdescription,coun(distinctappl_no),sum(year...
我想通过pl/sql 查询得出结果 select description,rolegroupdescription,coun(distinct appl_no), sum(year_premium) from 表1 group by description,rolegroupdescription问题在sum(year_premium)这里, 如图的例子我想得出的结果是24000,但这样统计会把所有year_premium 合计,如果sum(distinct premium) 会把appl_no不同但year_premium相同的值去掉。就会变成19000,所以请问应该怎么写。appl_no和year_premium 是 left join进去的表。
展开
1个回答
展开全部
先需要一步去重的操作,然后才能继续操作。
去重可以用group by也可以用rank开窗。
我都写一下,然后你自己判断。
group by写法,这个写法两次group效率应该低的吓人,而且感觉有些浪费。max的写法,是因为反正数字一样,max和min没有区别。mid也可以。
select description,rolegroupdescription,count(appl_no),sum(year_premium_o) from (select description,rolegroupdescription,appl_no,max(year_premium) year_premium_o from table group by description,rolegroupdescription,appl_no) group by description,rolegroupdescription
rank写法
select description,rolegroupdescription,count(appl_no),sum(year_premium) from (select rank()over(partion by description,rolegroupdescription,appl_no) row_num, description,rolegroupdescription,appl_no,year_premium from table) where row_num=1 group by description,rolegroupdescription
个人感觉可以考虑在连接的时候去除掉重复字段,至少这里我没有看到重复字段的相关作用,如果去掉重复字段那么就简单很多了。
去重可以用group by也可以用rank开窗。
我都写一下,然后你自己判断。
group by写法,这个写法两次group效率应该低的吓人,而且感觉有些浪费。max的写法,是因为反正数字一样,max和min没有区别。mid也可以。
select description,rolegroupdescription,count(appl_no),sum(year_premium_o) from (select description,rolegroupdescription,appl_no,max(year_premium) year_premium_o from table group by description,rolegroupdescription,appl_no) group by description,rolegroupdescription
rank写法
select description,rolegroupdescription,count(appl_no),sum(year_premium) from (select rank()over(partion by description,rolegroupdescription,appl_no) row_num, description,rolegroupdescription,appl_no,year_premium from table) where row_num=1 group by description,rolegroupdescription
个人感觉可以考虑在连接的时候去除掉重复字段,至少这里我没有看到重复字段的相关作用,如果去掉重复字段那么就简单很多了。
追问
您好,因为我取的字段包括拨打次数,接通次数等等,所以from后面是一个外呼任务表,如果from后面直接用含appl_no和year_premium字段的table。不是不想在连接的时候去重,table本来就是唯一不重复的,但就是因为left join 了外呼任务表,所以重复了,之前是分开统计就没有冲突,我现在想把拨打的情况和成交的情况统计在一个报表。所以有了重复的问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询