【发布时间】:2021-12-18 07:16:50
【问题描述】:
运行此查询将创建一个包含 3 列的表(地名、疫苗 ID 以及向不同人应用了多少疫苗的计数)。
select vaccines.placename, vaccinetype.idvaccine,count(*)
from vaccines,request,vaccinetype
where request.idvaccine = vaccines.idvaccine
and vaccinetype.idvaccine = request.idvaccine
group by vaccines.placename,vaccinetype.idvaccine
order by vaccines.placename, vaccinetype.idvaccine
在上面的查询结果图像中,您会看到在不同的地方应用了相同的疫苗 id,但这是我想要过滤的东西,我只想显示那些疫苗 id 最常应用于人。例如,在此表中,我们必须消除第 6 行,因为第 1 行已经存在具有相同的疫苗代码,而且列计数 (*) 中的值高于第 6 行。
我已尝试进行子查询,但过滤不正确。
【问题讨论】:
-
您想消除第 6 行,因为第 1 行对于相同的 IDVACCINE 具有更高的 COUNT,但是第 4 行呢?你不应该也消除那个吗?如果不是,则不清楚您通过不同地处理第 4 行和第 6 行来达到什么目的。
-
是的,你是对的@MarcoBonelli,我没有写完这个例子。也应该删除第 7 行和第 4 行
-
将您的查询包装在子查询中,然后使用任何链接的重复项。
标签: sql oracle debugging greatest-n-per-group