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

Mysql spojit dvě tabulky součet, kde a seskupit podle

Vynásobíte částku plateb počtem záznamů o prodeji, protože před sečtením částek spojujete všechny záznamy plateb se všemi záznamy o prodeji.

Nejprve agregujte a teprve poté se připojte.

V případě, že vždy může existovat pouze jeden záznam plateb na datum, čas a jméno:

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';

Jinak:

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. NÁVRAT NA POUŽITÍ Oracle v Javě (JDBC, Připravené prohlášení)

  2. Použijte Access nebo MySQL jako backendovou databázi

  3. Příklady CEILING() v SQL Server

  4. Vylepšení výkonu MySQL bez mezipaměti