首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于双变量的PostgreSQL计算面积比例

基于双变量的PostgreSQL计算面积比例
EN

Stack Overflow用户
提问于 2021-02-25 15:34:17
回答 1查看 86关注 0票数 0

我是PostgreSQL的新手,并不能真正解决一个简单的问题。以一个简化的表为例:

代码语言:javascript
复制
create table example(
    objectid integer,
    soil_type integer,
    area double precision);
    values (2,4,23.5),
    (2,3,30.45),
    (2,6,20.1),
    (1,3,10.5),
    (3,6,40.5),
    (3,4,20);

如何计算每种土壤类型在每个物体id中的面积份额?

EN

回答 1

Stack Overflow用户

发布于 2021-02-25 15:49:50

这通过soil_type做了一个简单的组,以获得每个soil_type的和(面积),这是放在子查询中的,其和被计算出来以得到总区域:

代码语言:javascript
复制
select soil_type, area, area / sum(area) over () as proportion 
from (select soil_type, sum(area) area from example group by soil_type)x;

 soil_type | area  |     proportion
-----------+-------+---------------------
         3 | 40.95 |  0.2823164426059979
         4 |  43.5 | 0.29989658738366076
         6 |  60.6 | 0.41778697001034126

你也可以:

代码语言:javascript
复制
with x as (select soil_type, sum(area) area from example group by soil_type)
select soil_type, area, area / (SELECT sum(area) FROM x) as proportion from x;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66371603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档