SQL-Aufgabe

Hi Leute!

Ich hab folgendes Problem:

Ich habe zwei Tabellen, nämlich Parent und Human. (Primaerschluessel sind unterstrichen, Fremdschluessel fett dargestellt):

human (name, gender, age)
parent (ParentName, ChildName)

Die Tabellen sehen dann so aus: http://cncdiplomarbeit.cn.funpic.de/SQL/relationen.jpg

Aufgabe: Welche Personen (Name!) haben ueberdurchschnittlich viele Geschwister (leibliche und Halbgeschwister)? Beachten Sie, dass im Durchschnittswert auch Personen, die keine Geschwister haben, berücksichtigt werden. Geben Sie im Ergebnis die Spalte Name aus!

Mir ist nicht klar, wie ich da anfangen soll. Ich weiß, dass ich alle Kinder suchen muss, die die gleichen Eltern haben.
Ich könnte also die Eltern gruppieren. Mehr fällt mir aber nicht ein.

Vielen Dank für die Hilfe!

lg enne

Ahhh, Problem schon gefunden. Was machst Du, wenn eine Person Geburtstag hat? Hint: speicher nicht das Alter, sondern den Geburtstag. Das Alter ist berechenbar.

parent (> ParentName, ChildName> )

Die Tabellen sehen dann so aus: > http://cncdiplomarbeit.cn.funpic.de/SQL/relationen.jpg

Aufgabe: Welche Personen (Name!) haben ueberdurchschnittlich viele Geschwister (leibliche und Halbgeschwister)? Beachten Sie, dass im Durchschnittswert auch Personen, die keine Geschwister haben, berücksichtigt werden. Geben Sie im Ergebnis die Spalte Name aus!

Mir ist nicht klar, wie ich da anfangen soll. Ich weiß, dass ich alle Kinder suchen muss, die die gleichen Eltern haben.
Ich könnte also die Eltern gruppieren. Mehr fällt mir aber nicht ein.

Vielen Dank für die Hilfe!

lg enne

Ich würde dies anders aufziehen, in einer Tabelle, und 8.4 mit rekursiven Queries. Aber egal:

test=*# select * from parent;
  parentname   |   childname
---------------+---------------
 g. kretschmer | a. kretschmer
 a. kretschmer | t. kretschmer
 a. kretschmer | m. kretschmer
 a. kretschmer | k. kretschmer
(4 rows)

test=*# select childname from parent where parentname in (select parentname from (select parentname, count(1) from parent group by 1 having count(1) > (select avg(count) from (select parentname, count(1) from parent group by 1)foo))bar);
   childname
---------------
 t. kretschmer
 m. kretschmer
 k. kretschmer
(3 rows)

Andreas, jetzt essen gehend, bevor ads alles wegfuttert.

Es ist genug für alle da!

Und alleine das Essen war den Ausflug hierher wert!