[英]operation on aggregated values SQL
我想按周总结收入,按周总结支出。
select *
from (select sum(revenue) earned
, week(transaction_date) earned_week
from mytable
where year(transaction_date) = '1988'
group by week(transaction_date)
) moneyin
inner join
(select sum(expenses) spent
, week(expense_date) spent_week
from mytable
where year(expense_date) = '1988'
group by week(expense_date)
) moneyout
on moneyin.earned_week = moneyout.spent_week;
现在,我想添加一列,其中包含进出钱之间的差额(收入-已用的AS余额),并且每周进行汇总。 但我没有把握可以插入该语句的级别。 有什么建议吗? 谢谢
您可以将moneyin和moneyout数据组与其他任何表一起使用,因此下面的查询应该起作用:
select * , moneyin.earned - moneyout.spent as Difference
from (select sum(revenue) earned
, week(transaction_date) earned_week
from mytable
where year(transaction_date) = '1988'
group by week(transaction_date)
) moneyin
inner join
(select sum(expenses) spent
, week(expense_date) spent_week
from mytable
where year(expense_date) = '1988'
group by week(expense_date)
) moneyout
on moneyin.earned_week = moneyout.spent_week;
我要说的是,您应该能够在语句顶部执行此操作,而不是选择*
所以像这样:
select earned week,
earned,
spent,
earned - spent as balance,
from (select sum(revenue) earned
, week(transaction_date) earned_week
from mytable
where year(transaction_date) = '1988'
group by week(transaction_date)
) moneyin
inner join
(select sum(expenses) spent
, week(expense_date) spent_week
from mytable
where year(expense_date) = '1988'
group by week(expense_date)
) moneyout
on moneyin.earned_week = moneyout.spent_week;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.