Sql查询在不同类别中显示最高

时间:2014-08-16 13:34:19

标签: php sql

您好我正在尝试执行一个查询,其中我根据每个线重量需要鱼的最大重量,即如果鱼的线重是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的功能。请帮忙

1 个答案:

答案 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