2014-10-17 2 views
1

최대 값을 검색하는 쿼리를 작성해야하며 최대 값이 동일한 항목이 더 있으면 둘 다 반환합니다. 예를 들어 , 내 데이터베이스SQL에서 하나 이상의 최대 값

Item  Price 
Coffee 2.50 
Tea  2.50 
Cola  1.50 

이 답변으로 커피와 차를 줄 것이다에있는 경우. 이 일반적으로 윈도우 함수를 사용하여 해결 사전

답변

4

에 감사 : 당신은 당신의 DBMS를 지정하지 않은

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

따라서 위의 표준 (ANSI) SQL이다.

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 

그냥 경우, 윈도우를 기능에 사용할 수 없습니다.

관련 문제