Prozentsatzberechnung aus SUM() innerhalb einer PostgreSQL-Abfrage
Die Abfrage verstehen
Die Die bereitgestellte Abfrage zielt darauf ab, den Prozentsatz der Zeilen zu berechnen, in denen value_a und value_b in der Tabelle my_obj gleich sind. Es tritt jedoch ein Fehler auf, da die Spalte „nb_ok“, auf die in der gespeicherten Prozedur „compute_percent“ verwiesen wird, nicht vorhanden ist.
Optimierte Lösung
Um dieses Problem zu beheben, sollten Sie Folgendes in Betracht ziehen eine effizientere Ansatz:
SELECT property_name, (COUNT(value_a = value_b OR NULL) * 100) / COUNT(*) AS pct FROM my_obj GROUP BY property_name;
Erklärung
Diese Abfrage:
Einschließlich Bruchstellen
Um Bruchstellen im Ergebnis beizubehalten, verwenden Sie die folgende modifizierte Abfrage:
SELECT property_name, ROUND((COUNT(value_a = value_b OR NULL) * 100.0) / COUNT(*), 2) AS pct FROM my_obj GROUP BY property_name;
Dies Die Version verwendet ROUND(...), um den Prozentsatz auf zwei Dezimalstellen zu runden.
Das obige ist der detaillierte Inhalt vonWie berechnet man effizient den Prozentsatz übereinstimmender Zeilen in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!