Hat jemand eine PostgreSQL-Entsprechung der PERCENTILE_CONT-Funktion von Oracle gefunden? Ich suchte und konnte keinen finden, also schrieb ich meinen eigenen.
Hier ist die Lösung, von der ich hoffe, dass sie Ihnen hilft.
Das Unternehmen, für das ich arbeite, wollte eine Java EE-Webanwendung von der Verwendung einer Oracle-Datenbank auf PostgreSQL umstellen. Mehrere gespeicherte Prozeduren stützten sich stark auf die Verwendung der einzigartigen PERCENTILE_CONT () - Funktion von Oracle. Diese Funktion existiert nicht in PostgreSQL.
Ich habe versucht zu sehen, ob irgendjemand diese Funktion ohne Erfolg in PG "portiert" hat.
Nach mehr Suche habe ich eine Seite gefunden, die den Pseudocode für die Implementierung dieser Funktion bei Oracle auflistet:
Ich habe beschlossen, eine eigene Funktion in PG zu schreiben, um Oracles Funktion nachzuahmen.
Ich habe eine Array-Sortiertechnik von David Fetter bei ::
gefundenund
Hier (zur Klarheit) ist Davids Code:
%Vor%Also hier ist die Funktion, die ich schrieb:
%Vor%Hier sind die Ergebnisse einiger Vergleichstests:
%Vor%Hier sind die Testdaten:
%Vor%Hier sind die Vergleichsergebnisse:
%Vor%Ich hoffe, dass dies jemandem hilft, das Rad nicht neu erfinden zu müssen.
Viel Spaß! Ray Harris
Mit PostgreSQL 9.4 gibt es jetzt native Unterstützung für Perzentile, implementiert in geordnete Mengen-Aggregatfunktionen :
%Vor%kontinuierliches Perzentil: gibt einen Wert zurück, der dem angegebenen entspricht Bruch in der Reihenfolge, interpoliert zwischen benachbarten Eingabeelementen wenn nötig
%Vor%mehrfaches kontinuierliches Perzentil: gibt ein Array mit übereinstimmenden Ergebnissen zurück Die Form des Bruchteile-Parameters mit jedem Nicht-Null-Element ersetzt durch den Wert, der diesem Perzentil entspricht
Weitere Informationen finden Sie in der Dokumentation: Ссылка
Tags und Links oracle postgresql function percentile