Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL calcule le pourcentage de deux autres sommes calculées dont un groupe par mois

Utilisez l'agrégation conditionnelle. Il n'est pas clair si vous voulez regarder les 12/24 derniers mois, ou les mois de 2017 et les mêmes mois en 2016. Je ne comprends pas non plus comment vous voulez calculer un pourcentage. Je divise les bénéfices de cette année par ceux de l'année dernière dans la requête ci-dessous. Ajustez-le pour qu'il réponde à vos besoins.

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;