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.