数据:
需求:查询每人每月的盈利以及当年至当月的累计利润
实现:
1.建表导入数据
2.先统计出每月的利润
3.查询结果自连接,条件:一表的月份大于等于二表的月份(累计求出各个月份的总利润)
select t1.name,t1.month,t1.allincome, sum(t2.allincome)from
(select name,substr(time,1,7) as month,sum(income) as allincome
from t_form
group by name,substr(time,1,7)) t1
join
(select name,substr(time,1,7) as month,sum(income) as allincome
from t_form
group by name,substr(time,1,7)) t2
on t1.name=t2.name
where t1.month>=t2.month
group by t1.name,t1.month,t1.allincome
;
这里有个问题卡了很久。当采用group by以后,能查询到的字段有哪些。我自己的理解为用来分组的key,以及函数操作value得到的结果。
在这里,刚开始group by 没有 t1.allincome 想取到t1.allincome 就会一直报错。。。。