sql >> Database >  >> RDS >> Mysql

tel twee rijen op en sorteer op datum / totaal

Hiervoor moeten we de gegevens filteren op de select en niet op de join.

Verwijder deze voorwaarde:

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

en voeg dit toe aan de selectie:

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

Bewerken:

hele zoekopdracht:

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



  1. Hoe u mysql-fouten kunt uitschakelen die op het scherm worden weergegeven in CodeIgniter

  2. Kan JavaScript verbinding maken met MySQL?

  3. Veld met meerdere waarden importeren in Solr vanuit mySQL met behulp van Solr Data Import Handler

  4. Hoe wijzig ik de naam van een primaire sleutelkolom in MySQL?