PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie macht man Prozent/Gesamt in SQL?

MySQL:

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

Bearbeiten

Ich schätze, es hilft, wenn ich das postgres bemerkt hätte Schild. Ich dachte, es wäre eine MySQL-Frage.

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. Mein PostgreSQL ist verrostet, also würde ich gerne wissen, ob die MySQL-Abfrage auf PostgreSQL funktioniert :)

Bearbeiten 2

Ich kann nicht genug betonen, um vorsichtig mit dem unten stehenden Vorschlag für die Anzahl (*) zu sein. Dies möchte man generell mit PostgreSQL vermeiden.