Mysql
 sql >> Baza danych >  >> RDS >> Mysql

zsumuj dwa wiersze i uporządkuj według daty / sumy

W tym celu musimy filtrować dane na wybranych, a nie na łączeniu.

Usuń ten warunek:

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

i dodaj to do wybranych:

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

Edycja:

całe zapytanie:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Liczba innych wierszy w tabeli o tej samej wartości

  2. Jak wstawić wartość BOOL do bazy danych MySQL?

  3. Wstawianie wielowymiarowej tablicy php do bazy danych mysql

  4. Zapytanie, aby uzyskać najlepsze 2 i 3 rekordy z tabeli

  5. Gdy pętla PHP get_result nie działa