sum问题

MySql 码拜 8年前 (2016-02-18) 885次浏览
tmp_statement_db里的每行记录都要显示
假如mainid=0,则直接显示amount
假如mainid>0,则肯定有且只有2条记录的mainid相同。
假如mainid>0,则这些记录要把全部相同mainid的amount合计在一起后除以2
像下面的id in (3,4),他们的mainid相同,则把30+40=70,70/2=35,则3,4的amount都显示为35
测试数据如下:
DROP TEMPORARY TABLE IF EXISTS tmp_statement_db;
create temporary table tmp_statement_db(id int,title varchar(10),mainid int,amount decimal(19,2));
insert into tmp_statement_db(id,title,mainid,amount)
select 1,”a”,0,10
UNION
select 2,”b”,0,20
union
select 3,”c”,3,30
UNION
select 4,”d”,3,40;
要的结果:
id  title   main  amount
1 a 0 10.00
2 b 0 20.00
3 c 3 35.00
4 d 3 35.00
解决方案

40

select id  ,title ,  main,
case mainid when 0 then amount
ELSE (select avg(amount) from tmp_statement_db where mainid=t.mainid)
end
from tmp_statement_db t

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明sum问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)