MySQL:
SELECT ROUND(
100.0 * (
SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
), 1) AS percent_total
FROM orders;
Upravit
Myslím, že by pomohlo, kdybych si všiml postgres štítek. Myslel jsem, že jde o otázku 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;
P.S. Můj PostgreSQL je zrezivělý, takže pokud dotaz MySQL funguje na PostgreSQL, rád bych to věděl :)
Úprava 2
Nemohu dostatečně zdůraznit, abych si dával pozor na níže uvedený návrh počtu (*). Obecně se tomu chcete vyhnout s PostgreSQL.