我需要找到仅由国家种植的独特水果,不应该由一个以上的国家种植。由独特国家统计的水果
typedef int (list::*find)(int val);
{
return 0;
}
输出:
class list {
public:
int *find(int val);
}
草莓,香蕉,mosambi仅在印度种植,因此共有3种独特的水果 芒果,菠萝只在澳大利亚种植,所以共有2种独特的水果
答案 0 :(得分:1)
一种方法使用两级聚合:
select country, count(*) as num_unique_fruits
from (select fruit, min(country) as country
from t
group by fruit
having count(*) = 1
) f
group by country;
请注意,如果只有一行,则min(country)
该行的国家/地区。
更“传统”的方法是使用not exists
:
select country, count(*)
from t
where not exists (select 1 from t t2 where t2.fruit = t.fruit and t2.country <> t.country)
group by country;
第一个可能在Hive中表现更好,但如果考虑性能则值得尝试这两种方法。