我有这样的表:
我需要获取数字,这些数字在不同的城市重复,并且每个数字都会获得这些城市的数量。
那是从这张表中,我需要结果:
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
但是,可能有更好的解决方案吗?我认为这不是最佳查询...
答案 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