PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment faire un pourcentage/total en SQL ?

MySQL :

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

Modifier

Je suppose que cela aide si j'avais remarqué le postgres étiquette. Je pensais que c'était une question 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 Mon PostgreSQL est rouillé, donc si la requête MySQL fonctionne sur PostgreSQL, j'aimerais savoir :)

Modifier 2

Je ne saurais trop insister pour me méfier de la suggestion de comptage (*) ci-dessous. Vous voulez généralement éviter cela avec PostgreSQL.