表
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来实现更好的性能。
答案 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
但我真的无法想出你需要这个的任何理由;请更新您的问题(提供更多背景信息),以帮助您找到更好的解决方案。