MySQL:
SELECT ROUND(
100.0 * (
SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
), 1) AS percent_total
FROM orders;
Bewerken
Ik denk dat het helpt als ik de postgres . had opgemerkt label. Ik dacht dat het een MySQL-vraag was.
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 Mijn PostgreSQL is roestig, dus als de MySQL-query werkt op PostgreSQL, zou ik dat graag willen weten :)
Bewerk 2
Ik kan niet genoeg benadrukken om op mijn hoede te zijn voor de onderstaande telling(*)-suggestie. Over het algemeen wil je dit vermijden met PostgreSQL.