使用不同的id时,使用不同的值

时间:2018-03-13 17:35:39

标签: sql postgresql

我正在研究如下数据:

sample_data

表中的

性别(M,F)具有相同的globalid,但是,我需要根据性别(M和F的总和)对不同的globalid值列进行求和。 我试过这段代码,但查询只返回了相同的数据。

select distinct (globalid) globalid, fcname, featureidentifier, 
       gender, source, wardcode,sum (distinct value) 
from public.kano_pp 
  source= 'Worldpop / ORNL Adjusted' 
group by globalid, fcname, featureidentifier,gender, source, wardcode, value
order by globalid; 

1 个答案:

答案 0 :(得分:0)

我想你想要更像这样的东西:

select globalid,
       sum(case when gender = 'F' then value else 0 end) as female_value,
       sum(case when gender = 'M' then value else 0 end) as male_value
from public.kano_pp 
where source = 'Worldpop / ORNL Adjusted' 
group by globalid
order by globalid; 

Postgres的最新版本支持filter子句,它比sum(case . . )更有效。