PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Tabel kueri dengan array_agg/median dari SEMUA posisi sebelumnya, LAST_10, LAST_50, tidak termasuk posisi saat ini

Postgres tidak memiliki fungsi agregat bawaan untuk MEDIAN . Namun, Anda dapat membuatnya menggunakan cuplikan fungsi yang tersedia di Wiki postgres . Cuplikan ini juga merupakan bagian dari ulib_agg perpustakaan yang ditentukan pengguna .

Setelah dibuat, Anda dapat menggunakannya seperti fungsi agregat seperti SUM atau STRING_AGG dengan window yang serupa spesifikasi. Postgres memberi Anda opsi untuk menentukan beberapa window definisi untuk fungsi agregat yang dipisahkan dengan koma.

Jadi, untuk mendapatkan MEDIAN dari 20 catatan sebelumnya, jendela Anda dapat didefinisikan seperti dalam kueri ini.

SELECT 
j.* ,  array_agg(position) over w as previous_positions,
       median(position)    over w_20 as med_20
  FROM jockeys j
WINDOW w as
(  partition by name ORDER BY id rows between 
     unbounded preceding and 1 preceding
     ),
     w_20 as
     (  partition by name ORDER BY id rows between 
           20 preceding and 1 preceding
     )

Selain itu, Anda dapat menerapkan ROUND berfungsi jika Anda ingin memotong angka desimal.

DEMO




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penyatuan Koneksi PostgreSQL:Bagian 2 – PgBouncer

  2. Apakah ada cara untuk mengatur waktu kedaluwarsa, setelah itu entri data dihapus secara otomatis di PostgreSQL?

  3. Koneksi ke Google Cloud PostgreSQL melalui JDBC dengan SSL

  4. Multi-tenancy dengan SQLAlchemy

  5. Bagaimana cara mengganti database di psql?