sql >> Database >  >> RDS >> PostgreSQL

Hoe procent/totaal in SQL te doen?

MySQL:

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

Bewerken

Ik denk dat het helpt als ik de postgres . had opgemerkt label. Ik dacht dat het een MySQL-vraag was.

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 Mijn PostgreSQL is roestig, dus als de MySQL-query werkt op PostgreSQL, zou ik dat graag willen weten :)

Bewerk 2

Ik kan niet genoeg benadrukken om op mijn hoede te zijn voor de onderstaande telling(*)-suggestie. Over het algemeen wil je dit vermijden met PostgreSQL.



  1. JPA Hibernate - cascade verwijderen in zowel database als annotatie

  2. Hoe kunnen beperkingen met externe sleutels tijdelijk worden uitgeschakeld met T-SQL?

  3. SQL:Is het mogelijk om te 'groeperen op' volgens de resultaten van de functie 'Vind ik leuk'?

  4. Oracle10 en JDBC:hoe zorg je ervoor dat CHAR volgspaties in vergelijking negeert?