PostgreSQL entspricht der PERCENTILE_CONT-Funktion von Oracle

8

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.

    
thatdevguy 13.01.2013, 02:14
quelle

2 Antworten

17

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 ::

gefunden

Ссылка

und

Arrayelemente sortieren

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

    
thatdevguy 13.01.2013 23:15
quelle
2

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: Ссылка

    
alfonx 16.02.2015 22:48
quelle