Aria

Apache Derby – tutorial

Apache Derby: funkcja użytkownika MEDIAN

Zadanie programistyczne

Stworzyć funkcję kolumnową umożliwiającą obliczanie mediany dla kolumny wyników

Mediana to środkowa wartość z kolumny wyników. W przypadku gdy liczba rekordów jest nieparzysta jest to wartość środkowa. W przypadku, gdy liczba rekordów jest nieparzysta jest to suma wyrazów środkowych podzielona przez 2.

Przykład w dokumentacji Derby oblicza błędną wartość mediany.

Rozwiązanie

Napisać klasę Median (aderby.Median).

Opis klasy

Klasa implementuje interfejs Aggregator, a więc i cztery metody tego interfejsu.

Typ podany jako środkowy (Double) w linii 9 musi odpowiadać typowi zwracanemu przez metodę terminate() w linii 31

Typ podany jako trzeci (Median<p>) w linii 9 musi odpowiadać typowi podanemu jako typ argumentu ‘otherData’ w metodzie merge. Nie musi to być typ tej klasy. Może być inny typ agregacyjny, ale z parametrem T.

Zadeklarować funkcję w bazie Derby (skrypt r091.sql)

    CREATE DERBY AGGREGATE median
    FOR DOUBLE
    RETURNS DOUBLE
    EXTERNAL NAME 'aderby.Median'
    ;
    

Napisać klasę testującą (R091_MEDIAN).

Przetestować przykład

1 39.8
2 39.2
3 36.8
    

Pliki do ściągnięcia

R091_MEDIAN.zip (klasa uruchamiająca)

Median.zip (klasa bazowa)

r091.zip (skrypt)

Aktualny (tworzony narastająco) plik module-info.java

Aktualny (tworzony narastająco) plik DerbyUtil.java

Pliki tworzone narastająco zastępują poprzednie pliki o tej samej nazwie i działają dla wszystkich wcześniej opublikowanych przykładów we wszystkich wpisach w projekcie. W przypadku pliku module-info.java może być potrzebne skreślenie niepotrzebnych wpisów.