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

additionner deux lignes et trier par date/total

Pour cela, nous devons filtrer les données sur la sélection et non sur la jointure.

Supprimer cette condition :

AND (month(d.date), year(d.date)) = (month(CURDATE()), year(CURDATE()))

et ajoutez ceci à la sélection :

SUM (CASE WHEN (month(d.date), year(d.date)) = (month(CURDATE()), year(CURDATE())) THEN 1 ELSE 0 END) as monthly

Modifier :

requête complète :

SELECT users.id, users.username, 
  COALESCE(sum(CASE WHEN (month(donations.date), year(donations.date)) = (month(CURDATE()), year(CURDATE())) THEN donations.amount ELSE 0 END), 0) monthly_sum, 
  COALESCE(sum(CASE WHEN (month(donations.date), year(donations.date)) = (month(CURDATE()), year(CURDATE())) THEN 1 ELSE 0 END), 0) monthly_amount, 

  COALESCE(sum(donations.amount), 0) total_sum, 
  count(*) total_amount

from users
left join donations
  on donations.uid = users.id
group by users.id, users.username

http://sqlfiddle.com/#!2/20a974/20/0