我在postgresql中遇到了一些麻烦。我不是一个高手,只是过得去。
我已经使用每个中的ID加入了3个表。还有一些汇总数据。我想要做的就是按区域分组然而我得到重复的区域行而不是它被组合在一起。
元表
-------------------------------
|id | Region | Area |
-------------------------------
|876 | London | Ruislip |
-------------------------------
| 899 |South West| Cheltenham|
-------------------------------
T1表
-----------------------
|id | Total_spend |
------------------------
|876 | 89999 |
------------------------
| 899 | 76664 |
------------------------
T2表
--------------------------
|id | Total_expend |
---------------------------
|876 | 8999 |
---------------------------
| 899 | 7837 |
---------------------------
|876 | 89999 |
---------------------------
| 899 | 6777 |
以下代码如下
Select meta.region, T1.total_spend,
Sum(T2.total_expend),
from meta,t1,t2
where meta.id = T1.id and meta.id=T2.id
Group by meta.region, T1.total_spend
我在区域列中重复行,因为T2中有几个相同的行,但甚至不能确保其正确聚合。
我不知道如何解决这个问题。
期望的输出
----------------------------------------
| Region | total_spend | total_expend|
----------------------------------------
| London | 89999 | 90898 |
----------------------------------------
|South West| 76664 | 14614 |
----------------------------------------
因此,total_expend由总和T1和T2连接到meta通过id聚合,然后我想在元数据表上按区域分组
听起来你只想通过region
分组。
SELECT meta.region,
sum(t1.total_spend),
sum(t2.total_expend)
FROM meta
INNER JOIN t1
ON meta.id = t1.id
INNER JOIN t2
ON meta.id = t2.id
GROUP BY meta.region;
如果你另外GROUP BY t1.total_spend
你将每个组分为region
每个total_spend
亚组。
还要考虑在JOIN
中使用显式的FROM
语法而不是逗号。它更容易阅读和理解。