sql >> データベース >  >> RDS >> Mysql

GROUPBYを使用した複雑なMySQLJOIN

    異なるテーブルのアイテムを同時にグループ化/合計したいので、一度にすべてを実行することはできないと思います。これを試してください:

     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
    

    あまり整頓されておらず、エレガントでもありませんが、うまくいくと思います。ユニットあたりの料金が1行を超える場合は注意が必要です。これは、実行中のことを示すためのフィドルです: http://sqlfiddle.com/#!2/f05ba/18




    1. MySQLでサーバー照合を表示する方法

    2. $ wpdb-> prepareでlikeステートメントを使用して、ワイルドカード文字が存在する場所にハッシュを表示する

    3. SQLServer-文字列内でn番目のオカレンスを検索します

    4. 文字列内の文字のすべての出現を検索するOracleクエリ