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

Komplexní MySQL JOIN s GROUP BY

Myslím, že to nemůžete udělat všechno najednou, jak se snažíte, protože chcete seskupovat/sčítat položky z různých tabulek současně. Zkuste toto:

 select unit, name, stays, days, total_price, charges, mgmt_fee,
   (total_price*.01*mgmt_fee) AS management,
   (total_price-(total_price*.01*mgmt_fee)-charges)  AS bal
 from (
 select 
   x.unit, 
   name, 
   count(*) as stays, 
   sum(days) as days, 
   sum(total_price) as total_price, 
   charges,
   mgmt_fee
 from
 (select 
   unit , 
   datediff(depart,arrival) as days,  
   total_price
 from
   Reservations
  ) as x
 join (
   select unit, sum(amount) as charges
   from Charges
   group by unit
   ) as y
 on x.unit = y.unit
 join Unit  as u
 on u.id = x.unit
 group by unit
 ) as inner_result

Není to moc uklizené nebo elegantní, ale myslím, že to funguje. Všimněte si, že budete muset být opatrní, pokud může být> 1 řádek poplatků za jednotku. Zde je housle, jak to ukázat:http://sqlfiddle.com/#!2/f05ba/18




  1. Co je nového v PostgreSQL 13?

  2. Převést interval na minuty

  3. Použití CASE v PostgreSQL k ovlivnění více sloupců najednou

  4. Nakonfigurujte MAMP tak, aby používal mariadb