如何将多个选择结果合并到一个表中?
我有一个查询,从同一个表中返回的月平均值,但对于不同的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
我该怎么做?
,如果你有相同的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
我期望得到12行(每月1个),但我得到144(12 * 12) - 使用您的查询。 – pookie
hm - 确实有帮助吗?..看我需要结构:) –
等一下 - 都是ids相同的值吗? –
为什么不干脆在CTE连接两个..他们有相同的标识 - 右.. –
@VaoTsun我不是很熟悉?与postgressql&数据库一般 - 我甚至不知道什么CTE是:) PS是,相同的ID。 – pookie
这是最简单的方法 - 无需分析结构和查询。检查我的答案,如果它的工作原理应该是 –