SQL中有多个最大值

时间:2014-10-17 17:49:24

标签: sql database subquery max

我需要编写一个搜索最大值的查询,如果有更多项目具有相同的最大值,它将返回它们。 例如,如果我在我的数据库中

Item     Price
Coffee   2.50
Tea      2.50
Cola     1.50

它会给咖啡和茶作为答案。 提前谢谢

2 个答案:

答案 0 :(得分:4)

这通常使用窗口函数来解决:

select item, 
       price
from (
  select item,
         price, 
         dense_rank() over (order by price desc) as rnk
  from the_table
) t 
where rnk = 1;

您没有指定DBMS,因此上面是标准(ANSI)SQL。

答案 1 :(得分:2)

或者......

SELECT 
    Item,
    Price
FROM the_table 
WHERE Price = (SELECT MAX(Price) FROM the_table)

或......

SELECT 
    Item,
    Price
FROM the_table 
WHERE NOT EXISTS 
  (
    SELECT Price 
    FROM the_table st
    WHERE st.Price > the_table.Price
  )

还是再一次......

SELECT 
    Item,
    Price
FROM 
    the_table 
     INNER JOIN 
      (
        SELECT MAX(Price) MaxPrice
        FROM the_table 
      ) Match ON 
        the_table.Price = match.MaxPrice 

万一窗口函数不可用。