sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo hacer porcentaje/total en SQL?

MySQL:

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

Editar

Supongo que ayuda si hubiera notado el postgres etiqueta. Pensé que era una pregunta de 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;

PD Mi PostgreSQL está oxidado, así que si la consulta de MySQL funciona en PostgreSQL, me gustaría saber :)

Editar 2

No puedo enfatizar lo suficiente como para desconfiar de la sugerencia de conteo (*) a continuación. Por lo general, desea evitar esto con PostgreSQL.