[db2] SQL --> komplizierte Anfrage

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

ich bin an die Grenze gestoßen. Ich habe folgende Tabelle:

Code:
Schueler_Name   Fach      Nachilfe_Schule

Ratna          Mathe        Schule_01
Ratna          Chemie       Schule_01
Ratna          Mathe        Schule_02
Lena           Mathe        Schule_02

Ich möchte gerne folgendes fabrizieren:
1. Anzahl von Schülern nach der Schule
2. Anzahl von Schülern bzgl einer Schule, die bei einer anderen Schule ebenfalls Nachhilfe bekommen.

Ich habe 1. geschafft:
Code:
select Nachhilfe_Schule, count(distinct Schueler_Name) as Anzahl_Schueler
from meineTabelle
group by Nachhilfe_Schule

Also, die Ergebnistabelle sieht folgendermaßen aus:

Code:
Nachhilfe_Schule   Anzahl_Schueler

Schule_01              1
Schule_02              2

Bei der 2. Anforderung komm ich nicht weiter :( Als Ergebnistabelle soll folgendes sein:

Code:
Nachhilfe_Schule   Anzahl_Schueler   Anzahl_fremdgehender_Schueler

Schule_01              1                              1 (Ratna)
Schule_02              2                              1 (Ratna)

Könnt Ihr mir bitte helfen? Vielen lieben Dank.

Schöne Grüße aus Rheinland,

Eure Ratna:p
 
SQL:
select 
  x.schule, count(distinct x.name) as anzahl_schueler, coalesce(y.cnt,0) as anzahl_fremdgehender_schueler
from 
  schule x
left join
  (select schule, count(distinct name) as cnt from (
  select distinct a.schule, a.name , b.schule as other_school
  from schule a
  inner join (
  select distinct schule, name 
  from schule) b
  on a.name = b.name and a.schule != b.schule
  ) group by schule) y
on 
  x.schule = y.schule
group by 
  x.schule, y.cnt;

geht evtl. auch noch hübscher, aber ich hab momentan keine zeit dazu...
 
Zuletzt bearbeitet von einem Moderator:
Hallo BaseBallBatBoy,

vielen lieben Dank.. Es hat funktioniert.:)

Muss nur noch verinnerlichen, was die Idee ist.

Schöne Grüße aus Rheinland,

Eure Ratna
 
Zurück