我有兩個表:area_costs和products_shipped。聚合數據並加入沒有對應鍵的兩個表
area_costs包含每個區域的成本,即快遞費用,運輸費用。
---------------------
|year|week|area|cost|
---------------------
表products_shipped包含所有被運到客戶的產品:
-------------------------------------------------------
|product_id|area|customer_id|drop_id|date_id|product_price|
-------------------------------------------------------
現在,如上所述,沒有匹配的關鍵連接這些表。我想要做一個計算,實際上需要每個區域的成本,並將其除以每個區域的下降數量以獲得每個平均花費的平均花費。如果所有的信息在一個表中可用,我可能會鍵入:
SELECT area, SUM(cost)/COUNT(drop_id) AS spent_per_drop FROM full_table GROUP by AREA
有什麼辦法所提供的信息做到這一點?
的樣本數據:
area_costs:
---------------------
|year|week|area|cost|
|2016|20 |mel |5000|
|2016|20 |syd |7500|
|2016|20 |bri |3000|
|2016|21 |mel |5200|
|2016|21 |syd |7400|
---------------------
products_shipped:
-----------------------------------------------------
|product_id|area|customer_id|drop_id |date_id |
|515 |syd |100 |515-syd-100-01|20160607|
|515 |syd |102 |515-syd-102-12|20160607|
|508 |mel |103 |508-mel-103-03|20160607|
-----------------------------------------------------
比方說,我做20周SUM()在area_costs表:
SELECT area, SUM(cost_actual) FROM area_costs GROUP BY area
我會得到75 00爲Syd。我想用products_shipped表中的drop_id數除以該數,這在示例數據中給出了2的計數。因此,結果應該是7500/2 = 3750.
我可以在2個查詢中執行此操作,分別得到兩個聚合,然後分割結果,但這不是一個靈活的解決方案。
我的問題是:是否有可能在一個查詢中做到這一點?
感謝您的任何答案。
如果您沒有匹配的密鑰,則不需要進行計算。您似乎在兩個區域都有「區域」字段。 –
「區域」不是兩個表格中的公共列嗎?如果您可以提供一些樣本數據來解釋您期望的輸出會更好 – Utsav
抱歉,忘記聲明這一點 - area_costs包含的區域中的值不一定是products_shipped表中的實際區域;可悲的是,如果我將面積作爲共同的領域,我的計算就會有偏差。 – Adrian