sql >> Database teknologi >  >> RDS >> Mysql

Mysql join to tabeller sum, hvor og gruppe efter

Du multiplicerer betalingsbeløbet med antallet af salgsposter, fordi du forbinder alle betalingsposter med alle salgsposter, før du opsummerer beløbene.

Saml først, og deltag først derefter.

Hvis der altid kun kan være én betalingspost pr. dato, klokkeslæt og navn:

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

Ellers:

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. Send en liste over heltal fra C# til Oracles lagrede procedure

  2. Brug som jokertegn i udarbejdet erklæring

  3. OFFSET vs. ROW_NUMBER()

  4. Sådan angives sorteringen i en forespørgsel i SQL Server (T-SQL)