PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zrobić procent / sumę w SQL?

MySQL:

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

Edytuj

Myślę, że to pomogłoby, gdybym zauważył postgres etykietka. Myślałem, że to pytanie dotyczące 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;

PS Mój PostgreSQL jest zardzewiały, więc jeśli zapytanie MySQL działa na PostgreSQL, chciałbym wiedzieć :)

Edytuj 2

Nie mogę wystarczająco podkreślić, aby uważać na poniższą sugestię hrabiego(*). Generalnie chcesz tego uniknąć w PostgreSQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można określić unikalny indeks z wartościami NULL dozwolonymi w Rails/ActiveRecord?

  2. jak zmienić port nasłuchiwania postgresql w systemie Windows?

  3. Przycinanie partycji na podstawie ograniczenia sprawdzającego nie działa zgodnie z oczekiwaniami

  4. Wielokrotny podział i przypisanie identyfikatora zamówienia

  5. Sequelize ma wiele, należy do lub oba?