Postgres heeft geen ingebouwde aggregatiefunctie voor MEDIAN
. Maar u kunt er een maken met behulp van het functiefragment dat beschikbaar is in Postgres-wiki
. Dit fragment maakt ook deel uit van de ulib_agg door de gebruiker gedefinieerde bibliotheek
.
Als het eenmaal is gemaakt, kunt u het gebruiken zoals elke andere statistische functie zoals SUM
of STRING_AGG
met vergelijkbaar window
specificatie. Postgres biedt u de mogelijkheid om meerdere window
te specificeren definities voor geaggregeerde functies gescheiden door een komma.
Dus om een MEDIAN
. te krijgen van de vorige 20 records, kan uw venster worden gedefinieerd zoals in deze zoekopdracht.
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
)
Bovendien mag u ROUND
. toepassen functie als u decimale cijfers wilt afkappen.