SQL-Ranking-Abfrage, um Ränge und Median in Untergruppen zu berechnen

8

Ich möchte den Median von y in Untergruppen berechnen dieses einfachen xy_table :

%Vor%

In diesem Beispiel ist jedes x eindeutig und die Tabelle ist bereits nach x sortiert. Ich möchte nun GROUP BY round(x) und bekomme das Tupel, das den Median von y in jeder Gruppe enthält.

Ich kann mit dieser Ranking-Abfrage bereits den Median für die gesamte Tabelle berechnen:

%Vor%

Ausgabe: 0.1, 4.0

Aber ich habe es noch nicht geschafft, eine Abfrage zu schreiben, um den Median für Untergruppen zu berechnen.

Achtung: Ich habe keine median() Aggregationsfunktion verfügbar. Bitte schlagen Sie auch keine Lösungen mit speziellen PARTITION -, RANK - oder QUANTILE -Anweisungen vor (wie in ähnlichen, aber zu herstellerspezifischen SO-Fragen ). Ich brauche einfachen SQL (d. H. Kompatibel zu SQLite ohne median() -Funktion)

Bearbeiten: Ich war eigentlich auf der Suche nach dem Medoid und nicht nach dem Median .

    
Juve 11.04.2013, 10:35
quelle

2 Antworten

3

Ich schlage vor, das Computing in Ihrer Programmiersprache zu machen:

%Vor%

Aber wenn Sie mit SQLite festgefahren sind, können Sie jede Gruppe nach y sortieren und die Datensätze in der Mitte wie folgt auswählen: Ссылка :

AKTUALISIEREN : nur der größere "Medianwert" ist wichtig für gerade nr. von Zeilen, also wird kein avg() benötigt:

%Vor%     
Aprillion 11.04.2013, 12:36
quelle
0

OK, dies beruht auf einer temporären Tabelle:

%Vor%

Aber Sie könnten dies möglicherweise für eine Reihe von Daten erstellen, an denen Sie interessiert sind. Ein anderer Weg wäre, sicherzustellen, dass xy_table diese Sortierreihenfolge hat, anstatt nur auf x zu bestellen. Der Grund dafür ist, dass SQLite keine Möglichkeit zur Zeilennummerierung hat.

Dann:

%Vor%

Wenn Sie den Median als den größeren der beiden mittleren Werte behandeln möchten, was nicht der Definition von @Aprillion entspricht, dann würden Sie einfach den größeren der beiden y -Werte wählen, anstatt ihr Durchschnitt, in der dritten Zeile der Abfrage.

    
muhmud 11.04.2013 13:22
quelle

Tags und Links