MySQL:
SELECT ROUND(
100.0 * (
SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
), 1) AS percent_total
FROM orders;
Sunting
Saya kira akan membantu jika saya memperhatikan postgres menandai. Saya pikir itu adalah pertanyaan 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. PostgreSQL saya berkarat, jadi jika kueri MySQL berfungsi di PostgreSQL, saya ingin tahu :)
Edit 2
Saya tidak bisa cukup menekankan untuk mewaspadai saran hitungan (*) di bawah ini. Anda biasanya ingin menghindari ini dengan PostgreSQL.