获取重复的值

时间:2013-08-09 22:38:36

标签: postgresql postgresql-9.2

我有这样的表:

enter image description here

我需要获取数字,这些数字在不同的城市重复,并且每个数字都会获得这些城市的数量。

那是从这张表中,我需要结果:

number | repeated citys quantity
 ----------
222    | 2

因为数字222在两个不同的城市重复出现。

我有这个解决方案:

1)greate函数,它返回数组中的唯一值,例如array_unique()

2)然后:

SELECT number, array_length(uniq_city_list, 1) FROM (
    SELECT number, array_unique(array_agg(city)) AS uniq_city_list FROM mytable
    GROUP BY number
)
AS t
WHERE array_length(uniq_city_list, 1) > 1

但是,可能有更好的解决方案吗?我认为这不是最佳查询...

1 个答案:

答案 0 :(得分:1)

select number, count(*)
from (
    select number, city
    from t
    group by number, city
) s
group by number
having count(*) > 1
order by number