Ich habe einen Schülertisch:
id | age
--------
0 | 25
1 | 25
2 | 23
Ich möchte alle Schüler abfragen und eine zusätzliche Spalte, in der angegeben wird, wie viele Schüler im gleichen Alter sind:
id | age | count
----------------
0 | 25 | 2
1 | 25 | 2
2 | 23 | 1
Was ist der effizienteste Weg, dies zu tun? Ich befürchte, dass eine Unterabfrage langsam sein wird, und ich frage mich, ob es einen besseren Weg gibt . Gibt es?
sql
performance
Assaf Lavie
quelle
quelle
Wenn Sie Oracle verwenden, reicht eine Funktion namens Analytics aus. Es sieht aus wie das:
Wenn Sie Oracle nicht verwenden, müssen Sie sich wieder den Zählungen anschließen:
quelle
Hier ist eine andere Lösung. Dieser verwendet eine sehr einfache Syntax. Das erste Beispiel der akzeptierten Lösung funktionierte nicht mit älteren Versionen von Microsoft SQL (dh 2000).
quelle
Ich würde so etwas machen wie:
quelle
quelle
und wenn die Daten in der Spalte "Alter" ähnliche Aufzeichnungen enthalten (dh viele Personen sind 25 Jahre alt, viele andere sind 32 Jahre alt usw.), führt dies zu Verwirrung bei der Ausrichtung der richtigen Anzahl auf jeden Schüler. Um dies zu vermeiden, habe ich mich auch an die Tabellen zum Studentenausweis gesetzt.
quelle