[英]JOINing two sub-queries with calculated fields
我有兩個表格,其中包含有關生產兩個小部件的信息。 Table1
如下所示:
表 2 如下所示:
我想計算每個小部件的平均產量並按國家/地區代碼 (ADM0_A3) 顯示,以便結果看起來像這樣(在此階段不必擔心丟失數據,例如 BWA 沒有小部件 1 的產量)
ADM0_A3 w1avg w2avg
DZA 50000 3450000
AGO 86000 40000
BWA blank 0
CMR 3500 blank
我正在使用的 MS ACCESS SQL 查詢在這里:
SELECT Z.ccode, Z.ave_w1, A.ave_w2
FROM
(
SELECT X.ADM0_A3 as ccode, 0.02 * X.sum_w1 / X.n_w1 AS ave_w1
FROM
(
SELECT t1.ADM0_A3, SUM(t1.production) AS sum_w1, COUNT(t1.production) as n_w1
FROM Table1 t1
GROUP BY t1.ADM0_A3
) X
) Z
JOIN
(
SELECT Y.ADM0_A3, 0.025 * Y.sum_w2 / Y.n_w2 AS ave_w2
FROM
(
SELECT t2.ADM0_A3, SUM(t2.production) AS sum_w2, COUNT(t2.production) as n_w2
FROM Table2 t2
GROUP BY t2.ADM0_A3
) Y
) A
ON A.ADM0_A3 = Z.ccode
我檢查了子查詢,它們工作正常。 但是,當我嘗試 JOIN 查詢時,我收到此錯誤消息"Syntax error in FROM clause"
。 我認為該解決方案相當簡單,但我看不到它,因此將不勝感激。 提前致謝!
你可以嘗試這樣做:
SELECT adm0_a3, MAX(w1avg) as w1avg, MAX(w2avg) as w2avg
FROM (SELECT t1.ADM0_A3, AVG(t1.production) * 0.02 as w1avg, NULL as w2avg
FROM Table1 as t1
GROUP BY t1.ADM0_A3
UNION ALL
SELECT t2.ADM0_A3, NULL, AVG(t2.production) * 0.02 as w1avg
FROM Table1 as t2
GROUP BY t2.ADM0_A3
) as t
GROUP BY adm0_a3;
我不確定是否所有版本的 MS Access 都支持FROM
子句中的UNION ALL
。 如果沒有,您可以使用視圖解決該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.