Szukaj…


Obliczanie mediany zbioru wartości

Funkcja MEDIAN od Oracle 10g jest łatwą w użyciu funkcją agregacji:

SELECT MEDIAN(SAL)
FROM EMP

Zwraca medianę wartości

Działa również na wartości DATETIME .

Wynik MEDIAN jest obliczany przez pierwsze uporządkowanie wierszy. Wykorzystując N jako liczbę wierszy w grupie, Oracle oblicza interesujący numer wiersza (RN) za pomocą wzoru RN = (1 + (0,5 * (N-1)). Ostateczny wynik funkcji agregującej oblicza się liniowo interpolacja między wartościami z wierszy o numerach wierszy CRN = SUFITOWY (RN) i FRN = PODŁOGA (RN).

Od wersji Oracle 9i można używać PERCENTILE_CONT, który działa tak samo jak funkcja MEDIAN z domyślną wartością percentyla 0,5

SELECT PERCENTILE_CONT(.5) WITHIN GROUP(order by SAL) 
FROM EMP

ZMIENNOŚĆ

Wariancja mierzy, jak daleko ustawione liczby są rozłożone od jego średniej. Z praktycznego punktu widzenia jest to kwadratowa odległość od jego średniej (środka) - im większa liczba, tym dalej jest punkt.

Poniższy przykład zwróci wariancję wartości wynagrodzenia

SELECT name, salary, VARIANCE(salary) "Variance"
FROM employees 

STDDEV

STDDEV zwraca przykładowe odchylenie standardowe wyrażu, zbiór liczb. Możesz użyć go jako funkcji agregującej i analitycznej. Różni się od STDDEV_SAMP tym, że STDDEV zwraca zero, gdy ma tylko 1 wiersz danych wejściowych, podczas gdy STDDEV_SAMP zwraca null.

Baza danych Oracle oblicza odchylenie standardowe jako pierwiastek kwadratowy wariancji zdefiniowanej dla funkcji agregującej VARIANCE.

Ta funkcja przyjmuje jako argument dowolny numeryczny typ danych lub dowolny nieliczbowy typ danych, który można niejawnie przekonwertować na typ danych liczbowych. Funkcja zwraca ten sam typ danych, co numeryczny typ danych argumentu.

Jeśli określisz DISTINCT, możesz określić tylko klauzulę_partycji_klasy klauzuli_ analitycznej. Polecenia order_by_clause i windowing_clause są niedozwolone.

Poniższy przykład zwraca odchylenie standardowe wynagrodzeń w tabeli przykładowe hr.employees:

Gdzie hr to Schemat, a pracownicy to nazwa tabeli.

SELECT STDDEV(salary) "Deviation"
FROM employees;

Deviation
----------
3909.36575

Kwerenda w poniższym przykładzie zwraca skumulowane odchylenie standardowe wynagrodzeń w dziale 80 w przykładowej tabeli godz. Pracowników, uporządkowanej według daty wypożyczenia:

SELECT last_name, salary, 
STDDEV(salary) OVER (ORDER BY hire_date) "StdDev"
FROM employees  
WHERE department_id = 30; 

LAST_NAME                     SALARY     StdDev
------------------------- ---------- ----------
Raphaely                       11000          0
Khoo                            3100 5586.14357
Tobias                          2800  4650.0896


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow