MySQL:
SELECT ROUND(
100.0 * (
SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
), 1) AS percent_total
FROM orders;
Edytuj
Myślę, że to pomogłoby, gdybym zauważył postgres etykietka. Myślałem, że to pytanie dotyczące 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 Mój PostgreSQL jest zardzewiały, więc jeśli zapytanie MySQL działa na PostgreSQL, chciałbym wiedzieć :)
Edytuj 2
Nie mogę wystarczająco podkreślić, aby uważać na poniższą sugestię hrabiego(*). Generalnie chcesz tego uniknąć w PostgreSQL.