PostgreSQL计算双项

时间:2015-02-09 03:57:25

标签: sql postgresql

region_id | zip_code
    1     |   10001   
    1     |   10002
    2     |   89001

我有邮政编码的数据 - 10001,89001,10001,10002

我需要为每个区域计算计数邮政编码(包括重复的邮政编码)。

region_id | count
    1     |   3   
    2     |   1

我尝试了这个查询:

SELECT region_id, COUNT(region_id) as count FROM my_table 
WHERE zip_code in ('10001','89001','10001','10002') GROUP BY region_id;

但是这个查询返回1个region_id的2个计数,这对我来说不行。

我已经用我的语言中的for循环完成了它,但也许可以使用SQL来实现更好的性能。

1 个答案:

答案 0 :(得分:1)

如果您想在输入中考虑重复项(而不是在实际的表格中),则只需要join

select region_id, count(region_id) as "count"
from my_table
join unnest(array[10001, 89001, 10001, 10002]) zip_code using (zip_code)
group by region_id

SQLFiddle


但我真的无法想出你需要这个的任何理由;请更新您的问题(提供更多背景信息),以帮助您找到更好的解决方案。