PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come fare percentuale/totale in SQL?

MySQL:

SELECT ROUND(
  100.0 * (
      SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
  ), 1) AS percent_total
FROM orders;

Modifica

Immagino che possa essere d'aiuto se avessi notato i postgres etichetta. Pensavo fosse una domanda su 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 Il mio PostgreSQL è arrugginito, quindi se la query MySQL funziona su PostgreSQL mi piacerebbe saperlo :)

Modifica 2

Non posso sottolineare abbastanza per diffidare del suggerimento di conteggio (*) di seguito. In genere vuoi evitarlo con PostgreSQL.