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

Funkcja Postgres ratio_to_report

W ogóle nie musisz importować określonej funkcji. Odpowiednik Postgresql przy użyciu okienkowego SUM :

SELECT ID, val, 1.0 * val / NULLIF(SUM(val) OVER(),0) AS ratio_to_report
FROM tab

SqlFiddleDemo

Wyjście:

╔═════╦══════╦═════════════════════╗
║ id  ║ val  ║   ratio_to_report   ║
╠═════╬══════╬═════════════════════╣
║  1  ║  10  ║ 0.16666666666666666 ║
║  2  ║  10  ║ 0.16666666666666666 ║
║  3  ║  20  ║ 0.3333333333333333  ║
║  4  ║  20  ║ 0.3333333333333333  ║
╚═════╩══════╩═════════════════════╝

Aby zasymulować PARTITION BY możesz użyć:

SELECT ID, val, category,
    1.0 * val / NULLIF(SUM(val) OVER(PARTITION BY category),0) AS ratio_to_report
FROM tab

SqlFiddleDemo2

Wyjście:

╔═════╦══════╦═══════════╦═════════════════╗
║ id  ║ val  ║ category  ║ ratio_to_report ║
╠═════╬══════╬═══════════╬═════════════════╣
║  1  ║  10  ║ a         ║ 0.25            ║
║  2  ║  10  ║ a         ║ 0.25            ║
║  3  ║  20  ║ a         ║ 0.5             ║
║  4  ║  20  ║ b         ║ 1               ║
╚═════╩══════╩═══════════╩═════════════════╝



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. prawidłowy UUID nie jest prawidłowym UUID

  2. Importowanie .csv z kolumną datownika (dd.mm.rrrr gg.mm.ss) przy użyciu psql \copy

  3. Instrukcje IF-THEN-ELSE w postgresql

  4. Niezbędne monitorowanie PostgreSQL — część 3

  5. psql:FATAL:nie można otworzyć bazy plików/11951/11717:system plików tylko do odczytu