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.