MySQL:
SELECT ROUND(
100.0 * (
SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
), 1) AS percent_total
FROM orders;
Rediger
Jeg tror, det hjælper, hvis jeg ville have bemærket postgres tag. Jeg troede, det var et MySQL-spørgsmål.
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 er rusten, så hvis MySQL-forespørgslen virker på PostgreSQL vil jeg gerne vide det :)
Rediger 2
Jeg kan ikke understrege nok til at være på vagt over for tælle(*)-forslaget nedenfor. Du vil generelt gerne undgå dette med PostgreSQL.