我正试图找到每个地区的唯一名称。我有一个(长)名单和地区列表,我想知道哪个名称只出现在一个地区。
我怎样才能有效地做到这一点?
数据如下所示:
name - region - ...
Merlangius merlangus - North Atlantic - ...
Gadus morhua - North Atlantic - ...
Limanda limanda - North Atlantic - ...
Merlangius merlangus - North Atlantic - ...
Limanda limanda - South Atlantic - ...
输出应该给出仅在该区域中出现的物种的名称和区域。在这种情况下,它应该导致类似这样的事情:
name - region - ...
Merlangius merlangus - North Atlantic - ...
Gadus morhua - North Atlantic - ...
谢谢!
答案 0 :(得分:2)
您可以使用 GROUP BY
和HAVING
条款。
实际上你可以这样做
create table test(name varchar(10),region varchar(10));
insert into test values('Joe','US');
insert into test values('Bill','US');
insert into test values('Joe','UK');
insert into test values('Stu','US');
insert into test values('Stu','UK');
Select name from test where name not in (
Select name
From (
select name,row_number() over(partition by region order by name) as rn
from test
)z
where z.rn>1
)
<强>输出强>
比尔