gpt4 book ai didi

sql - PostgreSQL:合并两个表中的记录并计算平均值

转载 作者:行者123 更新时间:2023-11-29 13:14:03 27 4
gpt4 key购买 nike

我有两个表,table_1 和 table_2。我想将 table_1 中的一些记录(具有特定 ID)与 table_2 中的一些记录(具有特定 ID)合并。

例如:我想将 table_1 中 ID 为“AA”的所有记录与 table_2 中 ID 为“HH”的记录合并。但是 ID“HH”不应该改变,但是值列 Val1 和 Val2 应该通过计算平均值来合并。此外,只有那些来自“AA”和“HH”的记录应该合并,它们共享相同的时间戳。所以执行查询后table_2看起来像这样。

例子如下:

Table_1:
ID | Timestamp | Val1 | Val2
-----------------------------------
AA | 2018-14-07 00:00 | 203 | 294
BB | 2018-14-07 00:00 | 193 | 194
CC | 2018-14-07 00:00 | 193 | 136
AA | 2018-14-07 00:15 | 194 | 198
BB | 2018-14-07 00:15 | 124 | 594
CC | 2018-14-07 00:15 | 105 | 110

Table_2:
ID | Timestamp | Val1 | Val2
-----------------------------------
HH | 2018-14-07 00:00 | 123 | 311
GG | 2018-14-07 00:00 | 156 | 202
HH | 2018-14-07 00:15 | 200 | 502
HH | 2018-14-07 00:30 | 303 | 198
PP | 2018-14-07 00:00 | 111 | 123

Table_2 (after executing the query):
ID | Timestamp | Val1 | Val2
-----------------------------------
HH | 2018-14-07 00:00 | 163 | 302 // Val1: (123 + 203)/2 = 163; Val2: (311+294)/2 = 302
GG | 2018-14-07 00:00 | 156 | 202
HH | 2018-14-07 00:15 | 197 | 350 // Val1: (200 + 194)/2 = 197; Val2: (502+198)/2 = 350
HH | 2018-14-07 00:30 | 303 | 198 // values stay the same because no record with the ID "AA" and the timestamp "2018-14-07 00:30" is available.
PP | 2018-14-07 00:00 | 111 | 123

如果您有任何问题以便更好地理解,请不要犹豫,发表评论。我将编辑问题以便更好地理解。

最佳答案

要查询所需信息,请尝试:

select T2.ID,
T2.Timestamp,
(T1.Val1 + T2.Val1)/2 Val1,
(T1.Val2 + T2.Val2)/2 Val2
from Table2 T2 left join (
select case ID when 'AA' then 'HH' end ID,
Timestamp,
Val1,
Val2
from Table1
) T1 on T2.ID = T1.ID and T2.Timestamp = T1.Timestamp

为了根据Table1更新Table2,尝试:

update Table2 as T2 set Val1 = (coalesce(T1.Value1, Val1) + Val1)/2,
Val2 = (coalesce(T1.Value2, Val2) + Val2)/2
from (
select case ID when 'AA' then 'HH' else ID end ID,
Timestamp,
Val1 AS Value1,
Val2 AS Value2
from Table1
) T1 where T2.ID = T1.ID and T2.Timestamp = T1.Timestamp

关于sql - PostgreSQL:合并两个表中的记录并计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51375424/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com