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

Mysql dołącza do dwóch tabel sum, gdzie i grupuje według

Mnożysz kwotę płatności przez liczbę rekordów sprzedaży, ponieważ przed zsumowaniem kwot łączysz wszystkie rekordy płatności ze wszystkimi rekordami sprzedaży.

Najpierw agreguj, a dopiero potem dołącz.

W przypadku, gdy zawsze może istnieć tylko jeden rekord płatności na datę, godzinę i nazwisko:

select p.name, p.time, p.name, s.sales_total, p.amount
from payments p
join
(
  select date, time, name, sum(total) as total
  from sales
  group by date, time, name
) s
 on s.date = p.date and s.time = p.time and s.name = p.name
where p.date = date '2017-04-01';

W przeciwnym razie:

select p.name, p.time, p.name, s.total, p.amount
(
  select date, time, name, sum(amount) as amount
  from payments
  group by date, time, name
) p
join
(
  select date, time, name, sum(total) as total
  from sales
  group by date, time, name
) s
 on s.date = p.date and s.time = p.time and s.name = p.name
where p.date = date '2017-04-01';



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Auto-inkrementacja MySQL na odrębną wartość wprowadzoną w innej kolumnie?

  2. Nie można nawiązać połączenia JDBC z MySQL (przy użyciu Javy, IntelliJ i Linux)

  3. Jak usunąć z zaznaczonych w MySQL?

  4. unikalny identyfikator w więcej niż jednej tabeli [MySQL]

  5. Zapisywanie zmian w SlickGrid za pomocą php