gpt4 book ai didi

sql - 如何查询具有相同值的组的 SQL

转载 作者:行者123 更新时间:2023-12-04 05:08:32 24 4
gpt4 key购买 nike

我有三个 Oracle 数据库表。我将创建一个人为的示例以使其更容易一些:

vert 表..

vid         name
1 Bob
2 Sally
3 Sue
4 Henry

特产
spid    Animal

1 Dogs
2 Cats
3 Mice
4 Kangaroos
5 Koala Bears

广告
id     vid   spid               Ad venue

1 1 1 TV ads
2 1 2 TV ads
3 1 2 Magazine ads
4 2 1 TV ads
5 2 1 On line ads
6 3 5 TV ads
7 4 5 Magazine ads

我想获得前 3 名 vert 的结果集,这些 vert 只为每个专业做广告。对于某些专业,可能没有 vert 只宣传该专业。 'vets' 表中有大约 30,000 行。 Specialties 表只有 10 行。
广告表有大约 100,000 行。我知道如何进行查询和连接,但不知道如何查找组内完全相同的行。

所以我正在寻找这样的输出:
 Dogs          null
Cats Sally
Mice null
Kangaroos null
Koala Bears Sue, Henry

最佳答案

select
max(animal) as animal,
listagg(name, ', ') within group (order by name) as vet_list
from
Specialties
left join (
select
vid,
max(spid) as spid,
row_number() over(partition by max(spid) order by null) rn
from Advertising
group by vid
having count(distinct spid) = 1
) using(spid)
left join veterinarians using(vid)
where lnnvl(rn > 3)
group by spid
order by spid

fiddle

关于sql - 如何查询具有相同值的组的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com