Den häufigsten Wert für eine Spalte anhand des Werts einer anderen Spalte in SQL finden
In einem Szenario, in dem eine Tabelle mehrere Spalten enthält, z „country“, „food_id“ und „eaten“ besteht eine häufige Aufgabe darin, den am häufigsten vorkommenden Wert für eine Spalte („food_id“) innerhalb jedes eindeutigen Werts einer anderen Spalte zu ermitteln („Land“).
Ein Ansatz, wie in der Frage erwähnt, besteht darin, temporäre Tabellen zu erstellen und mehrere Unterabfragen durchzuführen, um die Anzahl zu berechnen, die maximale Anzahl zu ermitteln und die entsprechenden „food_id“-Werte abzurufen. Obwohl diese Methode funktionsfähig ist, kann sie umständlich erscheinen.
Glücklicherweise hat PostgreSQL 9.4 eine einfachere Lösung eingeführt: die Funktion mode(). Diese Funktion bietet eine effiziente Möglichkeit, den häufigsten Wert für eine bestimmte Spalte innerhalb jeder durch einen Gruppierungsausdruck definierten Gruppe zu finden.
Um die mode()-Funktion für diese Aufgabe zu verwenden, kann die folgende SQL-Abfrage verwendet werden:
SELECT mode() within group (order by food_id) FROM munch GROUP BY country
Diese Abfrage nutzt die Funktion mode(), um den häufigsten „food_id“-Wert für jeden eindeutigen „country“-Wert zu berechnen. Die WITHIN GROUP (ORDER BY food_id)-Klausel stellt sicher, dass die Funktion mode() auf die Spalte „food_id“ innerhalb jeder Ländergruppe einwirkt und die Werte in aufsteigender Reihenfolge sortiert, bevor der Modus identifiziert wird.
Das Ergebnis dieser Abfrage wird, wie auch in der bereitgestellten Antwort gezeigt, eine Tabelle sein, die das „Land“ und den entsprechenden häufigsten „food_id“-Wert anzeigt:
country | mode -------------- GB | 3 US | 1
Das obige ist der detaillierte Inhalt vonWie finde ich die häufigste Lebensmittel-ID pro Land in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!