sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur gör man procent/totalt i SQL?

MySQL:

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

Redigera

Jag antar att det hjälper om jag skulle ha lagt märke till postgres märka. Jag trodde att det var en MySQL-fråga.

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. Min PostgreSQL är rostig, så om MySQL-frågan fungerar på PostgreSQL skulle jag vilja veta :)

Redigera 2

Jag kan inte betona tillräckligt för att vara försiktig med förslaget om räkna(*) nedan. Du vill i allmänhet undvika detta med PostgreSQL.



  1. Hur man jämför två kommaseparerade stränglistor med MySQL

  2. Uppdatering av heltalskolumn från jsonb-medlem misslyckas med:kolumn är av typen heltal men uttrycket är av typen jsonb

  3. Hur kan jag vidarebefordra en primär nyckelsekvens i Django på ett säkert sätt?

  4. Grupp för vecka, hur får man tomma veckor?