PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Hàm postgres ratio_to_report

Bạn không cần nhập chức năng cụ thể nào cả. Postgresql tương đương bằng cách sử dụng SUM có cửa sổ :

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

SqlFiddleDemo

Đầu ra:

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

Để mô phỏng PARTITION BY bạn có thể sử dụng:

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

SqlFiddleDemo2

Đầu ra:

╔═════╦══════╦═══════════╦═════════════════╗
║ 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. Cách tạo chỉ mục duy nhất trong đó thứ tự cột không được tính đến (đặt?)

  2. Tôi có thể tách một truy vấn thành nhiều truy vấn hoặc tạo song song để tăng tốc độ truy vấn không?

  3. Postgres:Làm cách nào để định dạng dấu thời gian int dưới dạng chuỗi ngày có thể đọc được?

  4. Lỗi không khớp dữ liệu cấp độ khi sử dụng \ PDO ::ATTR_EMULATE_PREPARES => true

  5. Postgresql:Xuất CSV có dấu ngắt dòng thoát