У меня есть 3 таблицы в sqlite следующим образом:
Таблица 1
ID | x
1, 2.0
2, 3.0
3, 4.0
4, 3.0
Таблица 2
join_ID | x
1, 5.0
1, 6.0
2, 5.0
2, 2.0
3, 2.0
4, 2.0
Таблица 3
join_ID | x
4, 5.0
1, 6.0
3, 5.0
2, 2.0
2, 2.0
1, 2.0
Я хотел бы получить следующую таблицу:
ID | x | x_agg
1, 2, 21
2, 3, 14
3, 4, 11
4, 3, 10
Где x
представляет сумму всех строк, содержащих совпадающие идентификаторы. По сути, это то вычисление, которого я хотел бы достичь:
row1 -> 2 + 5 + 6 + 6 + 2 = 21
row2 -> 3 + 5 + 2 + 2 + 2 = 14
row3 -> 4 + 2 + 5 = 11
row4 -> 3 + 2 + 5 = 10
Я использую sqlite в DBManager в QGIS (через пространственный). Выше приведен ограниченный рабочий пример, который я придумал, но он должен повторять условия, в которых я работаю Я придумал следующий код:
select
table1.ID,
ifnull(table1.x,0) as x,
SUM(ifnull(table2.x,0)) +SUM(ifnull(table3.x,0))+ifnull(table1.x,0) as x_agg
from
table1
left join table2 on table1.ID = table2.join_ID
left join table3 on table1.ID = table3.join_ID
group by
ID;
Но вместо этого получите:
ID x x_agg
1 2.0 40.0
2 3.0 25.0
3 4.0 11.0
4 3.0 10.0
Когда я запускаю выше. Что я здесь не так делаю?