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进去的表。 展开
 我来答
longrenyingdc8ecb1
2017-11-07 · TA获得超过1万个赞
知道大有可为答主
回答量:6032
采纳率:82%
帮助的人:2355万
展开全部
先需要一步去重的操作,然后才能继续操作。
去重可以用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 了外呼任务表,所以重复了,之前是分开统计就没有冲突,我现在想把拨打的情况和成交的情况统计在一个报表。所以有了重复的问题。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式