1

我有这样的表:

在此处输入图像描述

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

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

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

因为数字222在 2 个不同的城市重复。

我有这个解决方案:

1) 从数组返回唯一值的great函数,例如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

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

4

1 回答 1

1
select number, count(*)
from (
    select number, city
    from t
    group by number, city
) s
group by number
having count(*) > 1
order by number
于 2013-08-09T23:15:37.183 回答