Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hi!

aus oben genannter prüfung geht folgende aufgabe hervor:


-- Ertrag

datum		anlagen_ID		tagesertrag(1)

11-11-2007	A1004			3,8

11-11-2007	A1005			5,1

...



-- SonnenStd

datum		plz			sonnenstunden

11-11-2007	51491			4

11-11-2007	79123			6

...


-- Anlage

anlagen_ID	plz			maxertrag(2)

A1004		51491			1,0

A1005		79123			1,2

...	


(1) = Tagesertrag in kWh

(2) = Maximal möglicher Ertrag pro Sonnenstunde in kWh


Erstellen Sie jeweils eine SQL-Abfrage, die

a) alle IDs der Anlagen auflistet, deren Tagesertrag am 11.11.2007 mehr als 20% unter

   dem maximal möglichen Tagesertrag liegt (9P.)

 die IDs aller Anlagen und deren jeweilige Summe der 

   Tageserträge im Zeitraum vom 01.10 bis 31.10.2007 auflistet (9P.)


c) die IDs der Anlagen am Ort mit der PLZ 51491 auflistet, die am 11.11.2007 

   unter dem Durchschnittsertrag aller Anlagen an diesem Ort und Tag liegen. (7P.)

[/code]

HF... für Lösungsvorschläge bin ich sehr dankbar :old

Geschrieben (bearbeitet)

Ich frickel das mal als Übung unter dem prüfungsüblichen Zeitdruck zusammen ;p Kann falsch sein, das hätte ich aber hingeschrieben würde ich heute die Prüfung schreiben ;)

Aufgabe a)

SELECT anlagen_ID FROM Anlage a

    JOIN Ertrag e USING (anlagen_ID)

    JOIN SonnenStd s USING (datum)

    WHERE datum = '11-11-2007'

    GROUP BY anlagen_ID

        HAVING e.tagesertrag < ((s.sonnenstunden * a.maxertrag) * 0.8);
Aufgabe B)
SELECT anlagen_ID, SUM(e.tagesertrag) FROM Anlage a

    JOIN Ertrag e USING (anlagen_ID)

    WHERE e.datum BETWEEN '01-10-2007'

        AND '31-10-2007'

    GROUP BY anlagen_ID;
Aufgabe c)

SELECT anlagen_ID FROM Anlage a

    JOIN Ertrag e USING (anlagen_ID)

    WHERE a.plz = '51491'

        AND e.datum = '11-11-2007'

    GROUP BY anlagen_ID

        HAVING e.tagesertrag < (SUM(e.tagesertrag) / COUNT(e.anlagen_ID));

Bearbeitet von Martin1983
Geschrieben
mit dem join komm ich ja garnich klar, kannst du mir das erklären bitte?

Es gibt verschiedene Arten Tabellen zu verknüpfen. Die in den IHK-Lösungen gerne verwendete Lösung ist der sogenannte Old-School-Join, hierbei verknüpfst du mittels der WHERE Bedingung:

SELECT test1.dritte_spalte, test2.irgendeine_spalte FROM test1

    WHERE test1.id = test2.id;
Heutzutage wird jedoch in der Regel mit der JOIN-Anweisung gejoined, hierbei gibts es dann folgende 2 Möglichkeiten: Einmal mit USING was du verwendest wenn die Bezeichnungen der beiden Spalten über die die Tabellen verknüpft werden sollen die gleiche Bezeichnung haben (Wichtig: Spaltenname in Klammern, sonst ists mein ich syntaktisch falsch!!!):
SELECT test1.dritte_spalte test2.irgendeine_spalte FROM test1

    JOIN test2 USING (id);
Wenn du jedoch 2 unterschiedliche Spaltennamen hast über die du verknüpfst verwendest du ON:
SELECT test1.dritte_spalte test2.irgendeine_spalte FROM test1

    JOIN test2 ON (test1.id = test2.irgendeine_andere_spalte);

Geschrieben

ich glaub ich versag morgen in GA1.... hab grad die arbeit versucht fertig zu machen. mitm sequenzdiagramm komm ich net wirklich klar und bis auf die zwei handlungsschritte mit dem ERM und nem struktogramm siehts echt düster aus...

Geschrieben

Ich hab keine Ahnung :o) Das ist wie gesagt die Lösung die ich hinschreiben würde, was nicht heisst das sie richtig ist :) Auch wenn ich meiner Meinung nach dafür sehr viele Punkte verdient hätte ^^

Geschrieben

Kannst statt Left Outer Join auch einfach Left Join schreiben

Tabelle1 Left Join Tabelle 2 == Tabelle 2 Right Join Tabelle1

Afaik :D

P.S.: Ja beim Inner Join ists egal, da du mengentechnisch nur die Schnittmenge der Tabellen abfragst, daher ist es egal welche Tabelle du mit welcher "verinnerjoinst" ;)

Geschrieben

also unser Daten bank Lehrer meinte das es egal ist wie wir es in der Prüfung schreiben.

ausserdem kommt outer join in der AP dran bzw ist noch nie dran gekommen.

es kann natürlich sein das mittlerweile alle DBMs ünerstützen.

mfg

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...