Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL berechnet den Prozentsatz von zwei anderen berechneten Summen einschließlich einer Gruppe pro Monat

Verwenden Sie die bedingte Aggregation. Es ist nicht klar, ob Sie die letzten 12 / 24 Monate oder die Monate 2017 und die gleichen Monate 2016 betrachten möchten. Ich verstehe auch nicht, wie Sie einen Prozentsatz berechnen möchten. Ich teile die diesjährigen Gewinne durch die des letzten Jahres in der folgenden Abfrage. Passen Sie dies an Ihre Anforderungen an.

select
  b_emp_id,
  month,
  turnover_this_year,
  profit_this_year,
  turnover_last_year,
  profit_last_year,
  profit_this_year / profit_last_year * 100 as diff
from
(
  select
    b_emp_id,
    month(b_date) as month,
    sum(case when year(b_date) = year(curdate()) then b_turnover end) as turnover_this_year,
    sum(case when year(b_date) = year(curdate()) then b_profit end) as profit_this_year,
    sum(case when year(b_date) < year(curdate()) then b_turnover end) as turnover_last_year,
    sum(case when year(b_date) < year(curdate()) then b_profit end) as profit_last_year
  from bookings
  where year(b_date) in (year(curdate()), year(curdate()) - 1)
    and month(b_date) <= month(curdate())
  group by b_emp_id, month(b_date)
) figures
order by b_emp_id, month;