2017-05-04 127 views
0

我有一個查詢,從同一個表中返回的月平均值,但對於不同的pressure_level的:如何將多個選擇結果合併到一個表中?

SELECT some_id, avg(exposure_value) monthly_avg_1000 
FROM mytable 
WHERE pressure_level = 1000 
AND some_id = 7 
GROUP BY some_id, date_trunc('month', measurement_time) 

然後我有相同的查詢,但對於不同的pressure_level:

SELECT some_id, avg(exposure_value) monthly_avg_925 
FROM mytable 
WHERE pressure_level = 925 
AND some_id = 7 
GROUP BY some_id, date_trunc('month', measurement_time) 

兩個查詢返回12行(每月1)與ID和本月的平均值:

some_id | monthly_avg_1000 
-------------------------- 
1  | 0.000023 
1  | 0.000051 
1  | 0.000009 

some_id | monthly_avg_925 
-------------------------- 
1  | 0.000014 
1  | 0.000007 
1  | 0.000131 

我想結合這兩個查詢,所以噸帽子的monthly_avg_ *列都出現在決賽桌上:

some_id | monthly_avg_1000 | monthly_avg_925 
-------------------------- 
1  | 0.000023   | 0.000014 
1  | 0.000051   | 0.000007 
1  | 0.000009   | 0.000131 

我該怎麼做?

+0

爲什麼不乾脆在CTE連接兩個..他們有相同的標識 - 右.. –

+0

@VaoTsun我不是很熟悉?與postgressql&數據庫一般 - 我甚至不知道什麼CTE是:) PS是,相同的ID。 – pookie

+0

這是最簡單的方法 - 無需分析結構和查詢。檢查我的答案,如果它的工作原理應該是 –

回答

1

,如果你有相同的ID,那麼你可以嘗試加入:

with a as (
SELECT some_id, avg(exposure_value) monthly_avg_1000,date_trunc('month', measurement_time) d 
FROM mytable 
WHERE pressure_level = 1000 
AND some_id = 7 
GROUP BY some_id, date_trunc('month', measurement_time) 
) 
, b as (
SELECT some_id, avg(exposure_value) monthly_avg_925, date_trunc('month', measurement_time) d 
FROM mytable 
WHERE pressure_level = 925 
AND some_id = 7 
GROUP BY some_id, date_trunc('month', measurement_time) 
) 
select distinct a.some_id, monthly_avg_1000,monthly_avg_925 
from a 
join b on a.some_id = b.some_id and a.d = b.d 
+0

我期望得到12行(每月1個),但我得到144(12 * 12) - 使用您的查詢。 – pookie

+0

hm - 確實有幫助嗎?..看我需要結構:) –

+0

等一下 - 都是ids相同的值嗎? –

相關問題