Hallo Leute,
ich bräuchte eine SQL-Funktion oder Prozedur, die es ermöglicht, aus aggregierten oder klassifizierten Daten einen Median zu berechnen.
In einem vereinfachten Beispiel würde es darum gehen, das mittlere Alter (Median) der Einwohner eines Ortes zu berechnen. Die Daten liegen folgendermaßen vor:
Anzahl Einwohner
Gemeinde Alter: 20 Jahre Alter: 21 Jahre Alter: 22 Jahre Alter: 23 Jahre Alter: 24 Jahre Alter: 25 Jahre
A 11 65 50 22 87 15
B 2 5 9 5 6 4
C 6 10 15 22 32 33
da ich noch ein Neuling bin und noch nicht so fit in SQL bin habe ich bis jetzt das hier:
create or replace PROCEDURE FindMedian AS
NRows INTEGER;
i INTEGER;
dummy NUMBER;
median NUMBER;
CURSOR empCursor IS
SELECT GemeindeA
FROM Einwohner
ORDER BY GemeindeA;
BEGIN
SELECT count(*) INTO NRows --
FROM Einwohner;
OPEN empCursor;
i := 1;
WHILE (i <= NRows/2)
LOOP
FETCH empCursor INTO dummy;
i := i + 1;
END LOOP;
FETCH empCursor INTO median;
CLOSE empCursor;
dbms_output.put_line('OUTPUT:');
dbms_output.put_line('The median = ' || median);
END;
Leider komm ich nicht weiter.. Kann mir Bitte jemand weiterhelfen????
ich bräuchte eine SQL-Funktion oder Prozedur, die es ermöglicht, aus aggregierten oder klassifizierten Daten einen Median zu berechnen.
In einem vereinfachten Beispiel würde es darum gehen, das mittlere Alter (Median) der Einwohner eines Ortes zu berechnen. Die Daten liegen folgendermaßen vor:
Anzahl Einwohner
Gemeinde Alter: 20 Jahre Alter: 21 Jahre Alter: 22 Jahre Alter: 23 Jahre Alter: 24 Jahre Alter: 25 Jahre
A 11 65 50 22 87 15
B 2 5 9 5 6 4
C 6 10 15 22 32 33
da ich noch ein Neuling bin und noch nicht so fit in SQL bin habe ich bis jetzt das hier:
create or replace PROCEDURE FindMedian AS
NRows INTEGER;
i INTEGER;
dummy NUMBER;
median NUMBER;
CURSOR empCursor IS
SELECT GemeindeA
FROM Einwohner
ORDER BY GemeindeA;
BEGIN
SELECT count(*) INTO NRows --
FROM Einwohner;
OPEN empCursor;
i := 1;
WHILE (i <= NRows/2)
LOOP
FETCH empCursor INTO dummy;
i := i + 1;
END LOOP;
FETCH empCursor INTO median;
CLOSE empCursor;
dbms_output.put_line('OUTPUT:');
dbms_output.put_line('The median = ' || median);
END;
Leider komm ich nicht weiter.. Kann mir Bitte jemand weiterhelfen????