2015-04-21 13 views
5

Powiedz w tabeli A, mamy nazwę aplikacji i lokalizację, w której te aplikacje są używane.Jak znaleźć maksymalną wartość w tabeli

Szukam lokalizacji, w której najczęściej używana jest aplikacja. W przypadku więzi, obie lokalizacje powinny zostać zwrócone.

zawartość Tabela:

Application Location 
A   xy 
A   xy 
A   ab 
B   xy 
B   ab 
B   ab 

oczekiwany wynik:

Application Max(Loc) 
A    xy 
B    ab 
+0

Co zrobić, jeśli jest krawat? – Lamak

+0

powrót obie lokalizacje – Raja

Odpowiedz

8

ten można rozwiązać za pomocą funkcji agregacji RANK. Zamiast tego należy użyć numeru ROW_NUMBER, aby w przypadku więzów zwrócić tylko jeden wiersz na aplikację.

Przykład na SQL Fiddle.

SELECT application, location 
FROM (
    SELECT application, location, 
     RANK() OVER (PARTITION BY application ORDER BY COUNT(*) DESC) AS rn 
    FROM t 
    GROUP BY application, location 
) x 
WHERE rn = 1; 
+0

działa idealnie i zoptymalizowany również. Dzięki – Raja

Powiązane problemy