MySQL:
SELECT ROUND(
100.0 * (
SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
), 1) AS percent_total
FROM orders;
Redigera
Jag antar att det hjälper om jag skulle ha lagt märke till postgres märka. Jag trodde att det var en MySQL-fråga.
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. Min PostgreSQL är rostig, så om MySQL-frågan fungerar på PostgreSQL skulle jag vilja veta :)
Redigera 2
Jag kan inte betona tillräckligt för att vara försiktig med förslaget om räkna(*) nedan. Du vill i allmänhet undvika detta med PostgreSQL.