sql >> Database >  >> RDS >> Mysql

Complexe MySQL WORD LID met GROUP BY

Ik denk dat je het niet allemaal in één keer kunt doen zoals je probeert, omdat je items uit verschillende tabellen tegelijkertijd wilt groeperen/optellen. Probeer dit:

 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

Niet erg netjes of elegant, maar ik denk dat het werkt. Merk op dat je voorzichtig moet zijn als er> 1 rij in ladingen per eenheid kan zijn. Hier is een viool om het te laten zien:http://sqlfiddle.com/#!2/f05ba/18




  1. ANDROID&PHP - Hoe JSONArray van MySql weer te geven met behulp van PHP

  2. hoe PostgreSQL jsonb op te slaan met SpringBoot + JPA?

  3. MySQL werkt information_schema niet bij, tenzij ik ANALYZE TABLE `myTable` handmatig uitvoer

  4. Hoe gegevens van AWS Postgres RDS naar S3 (vervolgens Redshift) te pipen?