这是表订单中的数据。
有没有人可以帮我做统计工作?
------------------------------- id | order_amount | createtime ------------------------------- 1 | 10 | 1513605522 2 | 20 | 1513605523 3 | 30 | 1513605524 4 | 40 | 1513605525 -------------------------------这是我需要的输出
------------------------------- total_income | createtime ------------------------------- 10 | 1513605522 30 | 1513605523 60 | 1513605524 100 | 1513605525 -------------------------------这是我的sql语句,它没有给我我想要的东西。
select sum(order_amount) as total_income from order group by create time;
BTW。有可能产生输出.... 任何帮助对我来说意义重大。非常感谢。
答案 0 :(得分:1)
您可以使用:
set @amt := 0;
select @amt := @amt + order_amount as total_income, createtime
from order
order by createtime asc;
答案 1 :(得分:0)
在MySQL中,您可以使用相关子查询来执行此操作:
select o.*,
(select sum(o2.order_amount)
from orders o2
where o2.createtime <= o.createtime
) as running_amount
from orders o;
使用非标准SQL的另一个选择是使用变量:
select o.*, (@s := @s + o.order_amount) as running_amount
from (select o.*
from orders o
order by createtime
) o cross join
(select @s := 0) params;
请注意,子查询仅在更新版本的MySQL中需要。
实际上,MySQL 8.0 最终支持窗口函数,因此可以使用该版本中的标准SQL来完成:
select o.*, sum(o.order_amount) over (order by o.createtime) as running_amount
from orders o;