PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como fazer porcentagem/total em SQL?


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

Editar

Acho que ajuda se eu tivesse notado o postgres marcação. Eu pensei que era uma questão do 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. Meu PostgreSQL está enferrujado, então se a consulta MySQL funciona no PostgreSQL eu gostaria de saber :)

Editar 2

Não posso enfatizar o suficiente para ser cauteloso com a sugestão de contagem (*) abaixo. Você geralmente quer evitar isso com o PostgreSQL.