Im Kontext der Tabelle „my_obj“, die zwei Ganzzahlfelder enthält („value_a“ und „value_b“) möchten Sie den Prozentsatz der Fälle ermitteln, in denen „value_a“ gleich ist 'value_b'.
Für optimale Leistung und Einfachheit sollten Sie die folgende überarbeitete Abfrage berücksichtigen:
SELECT property_name ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
Dies Der Ansatz nutzt die Fähigkeit von „count()“, „NULL“-Werte zu ignorieren, um sicherzustellen, dass beide Spalten berücksichtigt werden. Indem die Anzahl der übereinstimmenden Werte mit 100 multipliziert und durch die Gesamtzahl dividiert wird, wird der Prozentsatz berechnet.
Wenn Bruchziffern gewünscht werden Verwenden Sie für das Ergebnis „100,0“ anstelle von „100“ in der Berechnung und erwägen Sie die Verwendung 'round()':
SELECT property_name ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
Diese überarbeitete Version stellt sicher, dass die Berechnung numerisch bleibt, Bruchwerte erhalten bleiben und eine höhere Präzision beim gemeldeten Prozentsatz ermöglicht.
Das obige ist der detaillierte Inhalt vonWie berechnet man den Prozentsatz übereinstimmender Werte zwischen zwei Spalten in einer einzelnen SQL-SELECT-Anweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!