WinFuture-Forum.de: Alte Abschlussprüfung Sql Statement - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Alte Abschlussprüfung Sql Statement nur eine Lösung möglich?


#1 Mitglied ist offline   b0toxXP 

  • Gruppe: aktive Mitglieder
  • Beiträge: 421
  • Beigetreten: 09. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Mainz/Neuruppin

geschrieben 14. März 2010 - 16:51

Hi Leute,

in diesem Jahr steht meine FI AE Abschlussprüfung an. Und da bin ich gerade dabei ein paar alte Prüfungen durchzugehen. Leider haben wir in der Berufsschule nur wenig SQL und im Betrieb gar keins durchgenommen. Daher beschränkt sich mein aktuelles Wissen auf ein Minimum (SELECT, CREATE, INSERT)

So nun zu der Prüfung:

folgende Aufgabenstellung:

Die xx GmbH soll für die AllSolar GmbH ein System entwickeln, mit dem die Leistungen der Photovoltaik-Anlagen überwacht werden können.

Folgende Tabellen stehen zur Verfügung:

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.

b) die IDs aller Anlagen und deren jeweilige Summe der Tageserträge im Zeitraum von 01.10 bis 31.10.2007 auflistet.

c) die IDs der Anlagen am Ort mit der PLZ 51491 auflistet, die am 11.11.2007 unter dem Durchschnittsertrag aller Anlagen am diesem Ort und Tag liegen.


-------

INFO: Nachfolgend geht es Primär und Aufgabenteil a). Dort bin ich mir recht unsicher. b und c können aber gern auch Kontrolliert werden :) Für Verbesserungsvorschläge bin ich sehr dankbar. Vielleicht kann man das ja noch optimieren.


So nun ist dort eine Lösungsdatei mit bei, dort habe ich mal reingesehen. Diese Lösung ist nicht von der IHK und ich weiß auch nicht wie die Lösung in der Prüfung bewertet wurde. Allerdings macht sie auf mich einen recht komplizierten Eindruck wie man später auch im Vergleich zu meiner (von mir selbst erdachten) Lösung sieht.

Lösungen der Datei:
zu a)
select Anlage.anlagen_ID 
from Anlage, SonnenStd, Ertrag 
where Anlage.anlagen_ID=Ertrag.anlagen_ID 
and Anlage.plz=Sonnenstunden.plz
and Ertrag.tagesertrag < (0.8*SonnenStd.sonnenstunden*Anlage.maxertrag)
and Ertrag.datum = '11.11.2007'
and SonnenStd.datum = '11.11.2007';


zu b)
select Ertrag.anlagen_ID, sum(Ertrag.tagesertrag)
from Ertrag
where Ertag.datum between '01.10.2007' and '31.10.2007'
group by Ertrag.anlagen_ID;


zu c)
select Anlage.anlagen_ID
from Anlage, Ertrag
where Ertrag.datum = '11.11.2007'
and Anlage.anlagen_ID=Ertrag.anlagen_ID
and Anlage.plz=51491
and Ertrag.tagesertrag < avg(Ertrag.tagesertrag);


Besonders irritierend finde ich dass die Anlagen-Tabelle mit einbezogen wird, wo doch die Anlagen-ID in den anderen beiden Tabellen eh schon drin steht. Das ist unnötige mehrarbeit finde ich.

Nun meine Lösungsvorschläge:

zu a)
SELECT anlagen_ID
FROM Ertrag
WHERE datum = "2007-11-11" AND Tagesertrag < ( SELECT MAX(tagesertrag) FROM Ertrag WHERE datum = "2007-11-11" ) * 0.8


Oder verstehe ich das hier Falsch? Muss ich den max. möglichen Tagesertrag vielleicht aus SonnenStd errechnen? Wenn ja, dann bräuchte ich ja tatsächlich alle drei Tabellen oder?

zu b)
SELECT Anlagen_ID, sum(tagesertrag) AS SUMME FROM Ertrag between "2007-10-01" and "2007-10-31" GROUP BY Anlagen_ID

Hier gibt's also quasi keinen Unterschied zu der Musterlösung.

Wichtige Frage hier: Sehe ich das richtig, das dass GROUP BY für die summierung zwingend erforderlich ist da er sonst alles Summieren würde?

zu c)
SELECT Anlage.anlagen_id FROM Anlage, Ertrag WHERE Anlage.plz = 51491 AND Ertrag.datum = "2007-11-11" AND Ertrag.Tagesertrag < avg(Ertrag.Tagesertrag) AND Anlage.Anlagen_id = Ertrag.Anlagen_id


Gruß

B0toxXP
Windows Live Mail: 3 Einladungen
Windows Live Messenger: 26 Einladungen (wenn die denn noch gebraucht werden?!)
GoogleMail: 99 Einladungen
Mabber: 10 Einladungen
0

Anzeige



Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0