我有两张这样的table:
表A**
| 身份证|和值|城市|
| --------------|--------------|--------------|
| 1|十四岁|巴黎|
| 1|四个|巴黎|
| 二|10个|柏林|
| 三|六十八|米兰|
| 四个|五十一|伦敦|
| 三|二|米兰|
表B
身份证 | 城市 | 格姆 |
---|---|---|
1 | 巴黎 | 多面体(XXX) |
二 | 柏林 | 多面体(XXX) |
三 | 米兰 | 多面体(XXX) |
四个 | 伦敦 | 多面体(XXX) |
我想为所有城市选择一个字段(sum_value
)的总和,并将城市几何添加到其中。我使用一个group by来将城市作为唯一值。下面的代码可以做到这一点:
SELECT SUM(tablea.sum_value), tableb.city
FROM tablea, tableb
WHERE tablea.id = tableb.id
GROUP BY tableb.city
所以我得到这样的结果:
| 总和|城市|
| --------------|--------------|
| 十八岁|巴黎|
| 10个|柏林|
| 七十个|米兰|
| 五十一|伦敦|
为了添加城市几何图形,我尝试了以下操作,但没有给予预期的结果。城市价值不再是唯一的,SUM也不起作用。
SELECT SUM(tablea.sum_value), tableb.city, tableb.geom
FROM tablea, tableb
WHERE tablea.id = tableb.id
GROUP BY tableb.city, tableb.geom
所以我得到了这个:
| 和值|城市|格姆|
| --------------|--------------|--------------|
| 十四岁|巴黎|多面体(XXX)|
| 四个|巴黎|多面体(XXX)|
| 10个|柏林|多面体(XXX)|
| 六十八|米兰|多面体(XXX)|
| 五十一|伦敦|多面体(XXX)|
| 二|米兰|多面体(XXX)|
但我想要这个
| 总和|城市|格姆|
| --------------|--------------|--------------|
| 十八岁|巴黎|多面体(XXX)|
| 10个|柏林|多面体(XXX)|
| 七十个|米兰|多面体(XXX)|
| 五十一|伦敦|多面体(XXX)|
如何添加城市几何图形,同时仍然具有唯一的城市值并执行SUM?
重要提示:几何体是多多边形
我正在使用PostgreSQL
4条答案
按热度按时间lyr7nygr1#
在不知道数据的情况下,我想这可能会发生,因为每个城市都有多个几何示例,但我也同意弗朗西斯科不使用:
这是一个交叉连接,如果你只是想在几何领域连接,我不确定这里是不是有意的。
dxxyhpgq2#
也许你的问题更适合使用INNER JOIN。示例:
xeufq47z3#
也许有些城市的geom值与其他城市的geom值不同。试试这个看看有什么不同
l2osamch4#
这可确保城市是唯一的,如果每个城市有多个几何体,则只选择一个: