MySQL :
SELECT ROUND(
100.0 * (
SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
), 1) AS percent_total
FROM orders;
Modifier
Je suppose que cela aide si j'avais remarqué le postgres étiquette. Je pensais que c'était une question MySQL.
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;
PS Mon PostgreSQL est rouillé, donc si la requête MySQL fonctionne sur PostgreSQL, j'aimerais savoir :)
Modifier 2
Je ne saurais trop insister pour me méfier de la suggestion de comptage (*) ci-dessous. Vous voulez généralement éviter cela avec PostgreSQL.