我有一张表,目前存储纬度和经度等信息。该表还存储同一用户的多个记录(即同一行),但存储不同的值(即,我们有重复的行,但其列中的值不同)。我试图获取同一用户的所有记录的平均值(即存储在重复行中的所有值的平均值),并将结果值存储在不同表中的单个唯一行中。
以下是原始表的结构(OldTable):
creatorId longitude latitude dutyCycleLevel
:ID[giA0CqQcx+(9kbuSKV== -106.58341 52.115345 -3712
lXB+jIS)DN!CXmj>0(P8^]== -106.6113 52.084724 -3480
lXB+jIS)DN!CXmj>0(P8^]== -106.610886 52.084927 -3480
lXB+jIS)DN!CXmj>0(P8^]== -106.61092 52.084885 -3480
以下是新表的结构(NewTable):
creatorId latitude longitude DutyCycle
:ID[giA0CqQcx+(9kbuSKV== NULL NULL -3712
lXB+jIS)DN!CXmj>0(P8^]== NULL NULL -3481
lXB+jIS)DN!CXmj>0(P8^]== NULL NULL -3480
您可能会注意到,我仍然有一个重复的creatorId字段。那是因为我根据不同的DutyCycle值存储值。
以下是我尝试使用但未提供所需结果的脚本:
insert into db.NewTable(latitude)
select AVG(oldTable.latitude) from db.oldTable
inner join NewTable on NewTable.dutyCycle = oldTable.dutyCycleLevel
group by dutyCycleLevel
正如我所提到的,我试图获取每个唯一的dutyCycle的平均纬度(可以在原始表中注意到)并将其作为NewTable中的唯一平均值存储在与原始表中相同的行中(即相同的dutyCycle行)。
有什么建议吗?
答案 0 :(得分:0)
如果要更新新表
insert into db.NewTable(creatorId, longitude, latitude, dutyCycleLevel)
select creatorId, AVG(longitude), AVGlatitude), dutyCycleLevel
from db.oldTable
group by creatorId, dutyCycleLevel
如果你想从头开始插入
{{1}}