繁体   English   中英

对聚合值SQL的操作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM