Berechnen von Prozentsätzen aus SUM() in einer einzelnen SQL-Abfrage
In PostgreSQL kann es zu einem Fehler kommen, wenn Sie versuchen, Prozentsätze mit SUM zu berechnen () innerhalb derselben SQL-Abfrage. Das Problem entsteht, wenn Sie versuchen, auf eine Spalte zuzugreifen, die noch nicht existiert, wie z. B. nb_ok in Ihrem Beispiel.
Optimierte Lösung
Ein effizienterer und genauerer Ansatz Um Prozentsätze zu berechnen, verwenden Sie die folgende Abfrage:
SELECT property_name, (count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
Diese Abfrage erfordert Folgendes Schritte:
Verarbeitung von NULL-Werten
Die Verwendung von OR NULL im count()-Ausdruck stellt sicher, dass NULL-Werte nicht gezählt werden. Dies ist wichtig, wenn Ihre Tabelle NULL-Werte enthält, da dadurch falsche Ergebnisse oder Fehler bei der Division durch Null vermieden werden.
Bruchziffern erzwingen
Um Bruchziffern in der Tabelle beizubehalten Als Ergebnis können Sie 100,0 anstelle von 100 verwenden, was zu einer numerischen Berechnung führt, die vermeidet Kürzung:
SELECT property_name, round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
Vermeidung von Bezeichnern, bei denen die Groß-/Kleinschreibung nicht beachtet wird
Bei der Verwendung von PostgreSQL wird empfohlen, nicht in Anführungszeichen gesetzte Bezeichner mit gemischter Groß-/Kleinschreibung wie valueA zu vermeiden. Verwenden Sie stattdessen Bezeichner in Kleinbuchstaben, um mögliche Fehler und Verwirrung zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie kann ich Prozentsätze mithilfe von SUM() in einer einzelnen PostgreSQL-Abfrage effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!