Heim > Datenbank > MySQL-Tutorial > Wie kann ich Prozentsätze mithilfe von SUM() in einer einzelnen PostgreSQL-Abfrage effizient berechnen?

Wie kann ich Prozentsätze mithilfe von SUM() in einer einzelnen PostgreSQL-Abfrage effizient berechnen?

Linda Hamilton
Freigeben: 2025-01-01 01:08:09
Original
291 Leute haben es durchsucht

How Can I Efficiently Calculate Percentages Using SUM() in a Single PostgreSQL Query?

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;
Nach dem Login kopieren

Diese Abfrage erfordert Folgendes Schritte:

  1. Zählt die Anzahl der Zeilen, in denen value_a gleich value_b ist, unabhängig von NULL-Werten, unter Verwendung von count(value_a = value_b OR NULL).
  2. Dividiert das Ergebnis durch die Gesamtzahl von Zeilen in der Tabelle mit count(*).
  3. Multipliziert das Ergebnis mit 100, um das Verhältnis als a auszudrücken Prozentsatz.

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage