Ich fand die GA1 ziemlich einfach und auch von der Zeit her gut zu schaffen.
Lösungen:
-- Fragen zum ERD --
1. Verstoß weil die Daten (Gesamtpreis) redundant sind und sich aus anderen Tabellen berechnen lassen.
2. Kann sinnvoll sein um lange Berechnungen nicht immer wieder auszuführen.
3. Da nur innerhalb der Transaktion die Integrität der Daten sichergestellt werden kann.
-- SQL --
SELECT ArtikelBez, MIN(Preis)
FROM Artikel
JOIN ArtikelPreis USING(ArtikelNr)
WHERE Datum_von BETWEEN '2007-01-01' AND '2007-12-31'
OR Datum_bis BETWEEN '2007-01-01' AND '2007-12-31'
GROUP BY ArtikelBez
SELECT
KundenNr,
COUNT(ArtikelNr),
AVG(Verkaufspreis)
FROM Kunde
JOIN Einkauf USING(KundenNr)
JOIN EinkaufsPosition USING(EinkaufsNr)
GROUP BY KundenNr
ORDER BY AVG(Verkaufspreis)
UPDATE Einkauf
SET Gesamtbetrag = (
SELECT SUM(Menge * Verkaufspreis)
FROM Einkaufsposition
WHERE Einkauf.EinkaufsNr = Einkaufsposition.EinkaufsNr
)
-- TOP-DREI ARTIKEL AUFGABE --
var a1, a2, a3;
for(i = 0; i < artikel.length; i++) {
if(a1 == null or artikelAnzahl.get(artikel[i]) > artikelAnzahl.get(a1)) {
a3 = a2;
a2 = a1;
a1 = artikel[i];
}
else if(a2 == null or artikelAnzahl.get(artikel[i]) > artikelAnzahl.get(a2)) {
a3 = a2;
a2 = artikel[i];
}
else if(a3 == null or artikelAnzahl.get(artikel[i]) > artikelAnzahl.get(a3)) {
a3 = artikel[i];
}
}
// a1 - a3 enthalten die top drei
-- KREDITKARTEN --
boolean pruefe(String cc)
{
var e1, e2, e3, e4, e5 = 0;
for(i = 0; i < cc.length; i++) {
if(i % 2 == 1) {
e1 += (cc[i] * 2 > 10) ? cc[i] * 2 - 9 : cc[i] * 2;
}
else {
e2 += cc[i];
}
}
e3 = e2 + e1;
e4 = e3;
while(e3 % 10 > 0) {
e3++;
}
return cc[cc.length - 1] == e3 - e4;
}
--- GA2 ----
Hier weiss ich nur noch das Ergebnis von der Aufgabe mit den Arbeitsstunden, die auf die EDV und den Vertrieb zu 60:40 aufgeteilt werden müssen.
Budget 25000
Design -7000
Verfügbar 18000
Gleichung:
18000 = (x * 0.4 * 60) + (x * 0.6 * 80)
18000 = 24x + 48x
18000 = 72x
x = 250 Stunden