2015-04-21 19 views
5

Sagen wir in Tabelle A, wir haben Anwendungsname und Speicherort, wo diese Anwendungen verwendet werden.So finden Sie den Höchstwert in einer Tabelle

Ich bin auf der Suche nach dem Ort, an dem eine Anwendung am häufigsten verwendet wird. Im Falle von Verbindungen sollten beide Standorte zurückgegeben werden.

Tabelleninhalt:

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

Erwartete Ausgabe:

Application Max(Loc) 
A    xy 
B    ab 
+0

Was ist, wenn es eine Krawatte gibt? – Lamak

+0

Rückgabe beide Standorte – Raja

Antwort

8

Diese gelöst werden kann RANK die Aggregationsfunktion. Verwenden Sie stattdessen ROW_NUMBER, um bei Verbindungen nur eine Zeile pro Anwendung zurückzugeben.

Beispiel für 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

funktioniert perfekt und optimiert auch. Vielen Dank – Raja

Verwandte Themen