Zoeken…


De mediaan van een set waarden berekenen

De MEDIAN-functie sinds Oracle 10g is een eenvoudig te gebruiken aggregatiefunctie:

SELECT MEDIAN(SAL)
FROM EMP

Het geeft de mediaan van de waarden terug

Werkt ook op DATETIME waarden.

Het resultaat van MEDIAN wordt berekend door eerst de rijen te ordenen. Met N als het aantal rijen in de groep, berekent Oracle het rijnummer (RN) van belang met de formule RN = (1 + (0,5 * (N-1)). Het eindresultaat van de aggregatiefunctie wordt berekend door lineair interpolatie tussen de waarden van rijen op rijnummers CRN = CEILING (RN) en FRN = FLOOR (RN).

Sinds Oracle 9i kunt u PERCENTILE_CONT gebruiken dat hetzelfde werkt als de MEDIAN-functie met standaardwaarden voor percentielwaarden van 0,5

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

VARIANTIE

Variantie meet hoe ver een vast aantal verspreid is over het gemiddelde. Vanuit praktisch perspectief is het een kwadraatafstand van het gemiddelde (midden) - hoe groter het getal, hoe verder het punt is.

In het volgende voorbeeld wordt variantie van salariswaarden geretourneerd

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

STDDEV

STDDEV retourneert de standaarddeviatie van het voorbeeld van expr, een reeks getallen. U kunt het gebruiken als zowel een verzamel- als een analytische functie. Het verschilt van STDDEV_SAMP doordat STDDEV nul retourneert wanneer het slechts 1 rij invoergegevens heeft, terwijl STDDEV_SAMP null retourneert.

Oracle Database berekent de standaarddeviatie als de vierkantswortel van de variantie die is gedefinieerd voor de VARIANCE-aggregatiefunctie.

Deze functie neemt als argument elk numeriek gegevenstype of elk niet-numeriek datatype dat impliciet kan worden geconverteerd naar een numeriek datatype. De functie retourneert hetzelfde gegevenstype als het numerieke gegevenstype van het argument.

Als u DISTINCT opgeeft, kunt u alleen de query_partition_clause van de analytic_clause opgeven. De order_by_clause en windowing_clause zijn niet toegestaan.

Het volgende voorbeeld wordt de standaard deviatie van de lonen in het monster hr.employees tabel:

Waar hr Schema is en werknemers een tabelnaam.

SELECT STDDEV(salary) "Deviation"
FROM employees;

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

De query in het volgende voorbeeld retourneert de cumulatieve standaardafwijking van de salarissen in Afdeling 80 in de voorbeeldtabel hr.medewerkers, gerangschikt op hire_date:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow