Advertisement
the0938

Ответ для задачи на MySQL

Mar 29th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 0.76 KB | None | 0 0
  1. select
  2.   @c := if(s_charges.summ is null, 0, s_charges.summ) as charge,
  3.   @p := if(s_payments.summ is null, 0, s_payments.summ) as payment,
  4.   @d := if(@u = users.id, @d + @c - @p, @c - @p) as debt,
  5.   @u := users.id as user_id,
  6.   periods.id as period_id
  7. from users
  8.   left join periods on true
  9.   left join (select sum(value) as summ, user_id, period_id from charges group by user_id, period_id) as s_charges
  10.     on s_charges.user_id = users.id and s_charges.period_id = periods.id
  11.   left join (select sum(value) as summ, user_id, period_id from payments group by user_id, period_id) as s_payments
  12.     on s_payments.user_id = users.id and s_payments.period_id = periods.id
  13.   join
  14.     (select @c := 0, @p := 0, @d := 0, @u := 0) var
  15. group by
  16.   users.id, periods.id
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement