MySQL:
SELECT ROUND(
100.0 * (
SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
), 1) AS percent_total
FROM orders;
Bearbeiten
Ich schätze, es hilft, wenn ich das postgres bemerkt hätte Schild. Ich dachte, es wäre eine MySQL-Frage.
PostgreSQL:
SELECT ROUND(
100.0 * (
SUM(CASE WHEN cust_id = 541 THEN 1 ELSE 0 END)::numeric / COUNT(order_id)
), 1) AS percent_total
FROM orders;
P.S. Mein PostgreSQL ist verrostet, also würde ich gerne wissen, ob die MySQL-Abfrage auf PostgreSQL funktioniert :)
Bearbeiten 2
Ich kann nicht genug betonen, um vorsichtig mit dem unten stehenden Vorschlag für die Anzahl (*) zu sein. Dies möchte man generell mit PostgreSQL vermeiden.