sql >> Databáze >  >> RDS >> Mysql

sečíst dva řádky a seřadit podle data / celkem

K tomu potřebujeme filtrovat data o výběru a ne o spojení.

Odstraňte tuto podmínku:

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

a přidejte toto do výběru:

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

Upravit:

celý dotaz:

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. SQL vybrat vše, pokud je parametr null, jinak vrátit konkrétní položku

  2. předat proměnnou javascript do php mysql select query

  3. java.sql.SQLException:Není vybrána žádná databáze

  4. Efektivní čtení a import souborů CSV v Oracle PL/SQL