sql >> Databáze >  >> RDS >> PostgreSQL

Jak udělat procento/celkem v SQL?

MySQL:

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

Upravit

Myslím, že by pomohlo, kdybych si všiml postgres štítek. Myslel jsem, že jde o otázku 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. Můj PostgreSQL je zrezivělý, takže pokud dotaz MySQL funguje na PostgreSQL, rád bych to věděl :)

Úprava 2

Nemohu dostatečně zdůraznit, abych si dával pozor na níže uvedený návrh počtu (*). Obecně se tomu chcete vyhnout s PostgreSQL.



  1. Výkon LIKE dotazů na mnohamilionových řádkových tabulkách, MySQL

  2. MSSQL v pythonu 2.7

  3. Funkce SQL Row_Number() v klauzuli Where

  4. Jsou proměnné PL/SQL v kurzorech efektivně stejné jako parametry vazby?