Heim >Datenbank >MySQL-Tutorial >Wie berechnet man den Prozentsatz übereinstimmender Werte in einer SQL-SELECT-Abfrage?
Prozentsätze aus SUM() in derselben SELECT-Abfrage berechnen
In der Tabelle my_obj, in der die Ganzzahlfelder value_a und value_b vorhanden sind, Das Ziel besteht darin, den Prozentsatz zu bestimmen, in dem value_a gleich ist value_b.
Falscher Versuch:
select sum(case when o.value_a = o.value_b then 1 else 0 end) as nb_ok, sum(case when o.value_a != o.value_b then 1 else 0 end) as nb_not_ok, compute_percent(nb_ok,nb_not_ok) from my_obj as o group by o.property_name;
Dieser Ansatz schlägt fehl, weil die Spalte nb_ok in der Abfrage nicht vorhanden ist.
Optimiert Lösung:
SELECT property_name ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
Erklärung:
Ergebnis:
property_name | pct --------------+---- prop_1 | 17 prop_2 | 43
Alternative für Fractional Ziffern:
SELECT property_name ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
Diese Variante führt eine Bruchziffer ein, um Dezimalstellen beizubehalten.
Das obige ist der detaillierte Inhalt vonWie berechnet man den Prozentsatz übereinstimmender Werte in einer SQL-SELECT-Abfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!