一、问题
有下面这样的一张表:
date
amount
2015-12-31
3000
2016-01-22
3100
2016-01-23
3100
2016-01-24
3100
2016-01-25
3100
2016-01-26
3100
2016-01-27
3100
2016-01-28
3100
2016-01-29
3100
2016-01-30
3100
2016-01-31
3300
2016-02-01
3400
2016-02-02
3500
想要获取像下面这样的结果:
year
month
diff
2016
1
300
2016
2
200
写出SQL语句。
从结果可以猜测,就是求每一个月与上一个月的累计值之间差值,其中amount的值是已经是累计值,所以需要再sum计算了。
初一看非常简单,不就是按年和月分组统计吗?
仔细一想其实没有想像中那么容易,最要是要计算行之间的差值,在MySQL中计算列之间的差值非常容易,难点在于要计算行之间的差值,这需要一点小技巧,通过MySQL变量和子查询把列值转换为行值。
注意:对