您好我正在尝试执行一个查询,其中我根据每个线重量需要鱼的最大重量,即如果鱼的线重是60并且重量被捕获的是100和200,它应该只显示200值,而不是100值,类似于表格中的所有其他鱼类
查询如http://sqlfiddle.com/#!2/80c6d/12
所示这里我需要表格如下:
Name Weight Line Weight
abc 200 60
abc 100 20
abc 100 10
pqr 300 60
pqr 100 20
我尝试在查询中使用unique,但它没有帮助,因为我需要为其他名称的鱼再次使用相同的线宽。我在php页面上实现这个,如果得到一个查询或任何查询将会有所帮助php的功能。请帮忙
答案 0 :(得分:1)
在这种情况下,基本的group by子句可能会有所帮助:
select
fish_name,
line_weight,
max(fish_weight) max_fish_weight
from
<your table name>
group by
fish_name,
line_weight
order by
fish_name,
line_weight
Oracle数据库提供内置函数(如rank()),如果group by无效,可以帮助您处理此类查询。例如,如果您想要查看每组鱼和线重的鱼的最高权重,您可以使用rank()编写一个查询,如下所示(在这种情况下可能不需要):
select
fish_name,
line_weight,
fish_weight max_fish_weight
from (
select
fish_name,
line_weight,
fish_weight,
rank() over (partition by fish_name, line_weight order by fish_weight desc) r
from
<your table name>
)
where r = 1
order by
fish_name,
line_weight