[SQL ] 兩張資料表的內容呈現在一張報表上?

看板Database作者 (揪~~竟,能不能考上?)時間10年前 (2015/10/15 23:39), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
資料庫名稱:mySQL 資料庫版本:5.6 內容/問題描述: 假設我有兩個Table A、B, Table A如下: user_id drive_distance(km) working_date ------- -------------- ------------ Tom 100 2015-08-25 John 250 2015-09-15 Tom 400 2015-09-30 Kevin 200 2015-10-14 Table B如下: user_id fuel_liter(L) fueling_date ------- ---------- ------------ Tom 20 2015-09-01 Tom 15 2015-10-08 John 30 2015-09-15 (kevin沒加油) 如果我想做出每個人員在8月到十月的總里程、總油耗、平均油耗報表, 該如何下SQL?希望呈現下列欄位: user_id total_dis(Km) total_oil(L) average_oil(Km/L) ------- ------------- --------- ----------- Tom 500 35 14.2 John 250 30 8.3 Kevin 200 0 0.0 有點複雜, 謝謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.109.156 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1444923544.A.8B0.html

10/16 06:36, , 1F
A left join B , 然後再做 sum 計算
10/16 06:36, 1F

10/16 12:02, , 2F
若用left join,會有重複計算的問題。假設Tom在A有
10/16 12:02, 2F

10/16 12:03, , 3F
兩筆紀錄,在B僅有一筆紀錄,則SUM的結果會變兩倍。
10/16 12:03, 3F

10/16 12:46, , 4F
那就先sum在left join?
10/16 12:46, 4F

10/16 16:54, , 5F
對 你說的沒錯 要先 sum 再 left join
10/16 16:54, 5F

10/19 00:51, , 6F
依照lbeeon的方法OK了 謝謝!
10/19 00:51, 6F
文章代碼(AID): #1M7yYOYm (Database)