Kurs:Wirtschaftsinformatik SS09 Datenbankmanagementsysteme/Teil 4/Loesungen WS2009

Aus Wikiversity

Mengen[Bearbeiten]

Answer details for exercise #8480 Exercise:

Welche Linien fahren über 'Hirschlandplatz' und enden in 'Margarethenhöhe'. Ausgabe(Alle Attribute von Linie)

Your answer:

SELECT * FROM linie WHERE linienr IN (SELECT linienr FROM erreicht WHERE haltestellenr=(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Hirschlandplatz')) AND linieendhaltestellenr=(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Margarethenhöhe')

Correct answer:

select l.* from linie l, haltestelle sh1 where l.linieendhaltestellenr = sh1.haltestellenr and haltestellenname = 'Margarethenhöhe' and exists (select * from erreicht natural join haltestelle where linienr = l.linienr and haltestellenname = 'Hirschlandplatz');


Answer details for exercise #8484 Exercise:

Geben Sie alle Busse aus, die NICHT auf Fahrten eingesetzt werden. Die Ergebnisrelation soll alle Attribute der Bus-Relation anzeigen.

Your answer:

SELECT * FROM bus WHERE busnr NOT IN(SELECT DISTINCT busnr FROM fahrt)

Correct answer:

SELECT * FROM bus where busnr NOT IN (SELECT busnr from fahrt);

Answer details for exercise #8481 Exercise:

Welche Linien fahren über starten von 'Altenessen Mitte' und fahren über 'Hirschlandplatz'.Ausgabe(Alle Attribute von Linie).

Your answer:

SELECT * FROM linie WHERE linienr IN (SELECT linienr FROM erreicht WHERE haltestellenr=(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Hirschlandplatz')) AND liniebeginnhaltestellenr=(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Altenessen Mitte')


Correct answer:

select l.* from linie l, haltestelle sh1 where l.liniebeginnhaltestellenr = sh1.haltestellenr and haltestellenname = 'Altenessen Mitte' and exists (select * from erreicht natural join haltestelle where linienr = l.linienr and haltestellenname = 'Hirschlandplatz') ;


Answer details for exercise #8483 Exercise:

Welche Haltestellen sind in den Fahrplänen von den Linien 111 und 118 beinhaltet? Ausgabe(haltestellenr,haltestellenname).

Your answer:

SELECT DISTINCT haltestellenr,haltestellenname FROM erreicht NATURAL JOIN haltestelle WHERE haltestellenr IN(SELECT haltestellenr FROM erreicht WHERE linienr=111) AND haltestellenr IN(SELECT haltestellenr FROM erreicht WHERE linienr=118);

Correct answer:

select haltestellenr, haltestellenname from erreicht natural join haltestelle where linienr = 111 and haltestellenr in (select haltestellenr from erreicht where linienr = 118);

Answer details for exercise #8482 Exercise:

Welche Haltestellen sind exclusiv im Fahrplan einer bestimmten Linie beinhaltet ? (Die Haltestellen dürfen nicht in den Fahrplänen anderer Linie vorhanden sein).Ausgabe (Linienr,haltestellenr).

Your answer:

Correct answer:

select linienr, haltestellenr from erreicht e where haltestellenr not in (select haltestellenr from erreicht where linienr <> e.linienr);

Answer details for exercise #8485 Exercise:

Geben Sie alle Fahrer aus, die derzeit nicht auf Fahrten eingesetzt werden.

Your answer:

SELECT * FROM fahrer WHERE fahrernr NOT IN(SELECT DISTINCT fahrernr FROM leitet);

Correct answer:

select * from fahrer where fahrernr not in (select fahrernr from fahrer natural join leitet);


DDL[Bearbeiten]

Answer details for exercise #8455 Exercise:

Erstelle eine Tabelle FahrerAttr, die (vorerst nur) die Attribute nachname, vorname (jeweils als zeichenketten) und geschlecht (vom Typ GESCHLECHT_TYP) enthält.

Your answer:

CREATE TABLE FahrerAttr(nachname VARCHAR(255),vorname VARCHAR(255),geschlecht GESCHLECHT_TYP);

Correct answer:

create table FahrerAttr (nachname varchar(31), vorname varchar(31), geschlecht GESCHLECHT_TYP);

Answer details for exercise #8454 Exercise:

Erzeugen Sie eine Tabelle LinieErreicht mit den attributen linieNr (vom Typ smallint), haltestelleNr (von Typ smallint) und fahrzeit (vom typ INTERVAL MINUTE).

Your answer:

CREATE TABLE LinieErreicht(linieNr smallint, haltestelleNr smallint, fahrzeit INTERVAL MINUTE);

Correct answer:

create table LinieErreicht (linieNr smallint, haltestelleNr smallint, fahrzeit INTERVAL MINUTE);

Answer details for exercise #8457 Exercise:

Die Tabelle Fahrer besitzt die Spalte 'zustand', die angibt, ob ein Fahrer 'aktiv', 'beurlaubt', 'krank', 'entlassen' oder 'im Ruhestand' ist. Erstellen Sie eine Liste der monatlichen Bezüge der Ruheständler mit den Spalten vorname, nachname, fahrernr als personalnr und grundgehalt als betriebsrente.

Your answer:

SELECT vorname, nachname, fahrernr AS personalnr, grundgehalt AS betriebsrente FROM fahrer WHERE zustand='im Ruhestand';

Correct answer:

select vorname, nachname, fahrernr as personalnr, grundgehalt as betriebsrente from Fahrer where zustand = 'im Ruhestand';

Answer details for exercise #8458 Exercise:

Lösche die Tabelle 'leitet' aus der DB.

Your answer:

DROP TABLE leitet;

Correct answer:

DROP TABLE leitet;

Answer details for exercise #8456 Exercise:

Lösche die Tabelle 'erreicht' aus der DB.

Your answer:

DROP TABLE erreicht;

Correct answer:

DROP TABLE erreicht;

DML[Bearbeiten]

Answer details for exercise #8488 Exercise:

Setzen Sie die Beginnhaltestelle aller Linien auf jene Haltestelle, die sie zuerst erreichen (fahrzeit = 0 Minuten).

Your answer:

UPDATE linie l SET liniebeginnhaltestellenr=(SELECT haltestellenr FROM erreicht WHERE linienr=l.linienr AND fahrzeit= '0 Minutes');

Correct answer:

update linie set liniebeginnhaltestellenr = (select haltestellenr from erreicht where fahrzeit = '00:00:00' and erreicht.linienr = linie.linienr);


Answer details for exercise #8499 Exercise:

Das Grundgehalt aller Fahrer mit Kindern soll um 100 Euro steigen.

Your answer:

UPDATE fahrer SET grundgehalt=grundgehalt+100 WHERE kinderanzahl>0

Correct answer:

update fahrer set grundgehalt = grundgehalt + 100 where kinderanzahl > 0;

Answer details for exercise #8487 Exercise:

Ergänzen Sie die Fahrertabelle um einen Fahrer (id=47111), der zum heutigen Datum neu angestellt wurde und ab sofort aktiv in Dienst tritt. Der Fahrer heißt "Heinz Huttrop" und wurde am 23.06.1986 geboren. Heinz Huttrop ist kinderlos und fängt mit einem Anfangsgrundgehalt von 1800 Euro an.

Your answer:

INSERT INTO fahrer(fahrernr,nachname,vorname,geburtsdatum,einstellung,kinderanzahl,grundgehalt,zustand) VALUES('47111','Huttrop','Heinz','1986-06-23',CURRENT_DATE,0,1800,'aktiv');

Correct answer:

INSERT INTO Fahrer (fahrernr, vorname, nachname, zustand, geburtsdatum, grundgehalt, einstellung, kinderanzahl) VALUES (47111, 'Heinz', 'Huttrop', 'aktiv', '1986-06-23', 1800, current_date, 0);


Answer details for exercise #8495 Exercise:

Setzen Sie das Attribut tuev des Busses mit der Busnr 120 auf den 01.04.2008.

Your answer:

UPDATE bus SET tuev='2008-04-01' WHERE busnr=120

Correct answer:

update bus set tuev = '2008-04-01' where busnr = 120;

Answer details for exercise #8494 Exercise:

Die Beginn- und Endhaltestellen aller Linien wurden renoviert. Ihr Zustand ist nunmehr "sehr gut". Nehmen Sie die entsprechenden Änderungen an den Datensätzen in der Tabelle Haltestelle vor.

Your answer:

UPDATE haltestelle SET zustand='sehr gut' WHERE haltestellenr IN(SELECT liniebeginnhaltestellenr FROM linie) OR haltestellenr IN(SELECT linieendhaltestellenr FROM linie)

Correct answer:

update Haltestelle set zustand = 'sehr gut' where haltestellenr in (select liniebeginnhaltestellenr from linie union select linieendhaltestellenr from linie);

Answer details for exercise #8496 Exercise:

Erstellen Sie eine neue Haltestelle (id=998), die dem Fahrer mit der Fahrernr 19653 zu Ehren eingerichtet wird und daher den gleichen Namen wie er (wie sein Nachname) erhält. Erstellen Sie den Datensatz unter Zuhilfenahme einer Select-Anweisung. Die Haltestelle ist neu und daher in "sehr gute" Zustand.

Your answer:

INSERT into Haltestelle VALUES(998,(SELECT nachname FROM fahrer WHERE fahrernr=19653),'sehr gut');

Correct answer:

insert into haltestelle (haltestellenr, haltestellenname, zustand) values(998, (select nachname from fahrer where fahrernr = 19653), 'sehr gut');

Answer details for exercise #8489 Exercise:

Setzen Sie die Endhaltestelle aller Linien auf jene Haltestelle, die sie zuletzt erreichen (fahrzeit = max. Minuten).

Your answer:

UPDATE linie AS l SET linieendhaltestellenr=(SELECT haltestellenr FROM erreicht e WHERE e.fahrzeit=(SELECT max(fahrzeit) FROM erreicht WHERE linienr=l.linienr) AND e.linienr=l.linienr);

Correct answer:

update linie set linieendhaltestellenr = (select haltestellenr from erreicht where fahrzeit = (select max(fahrzeit) from erreicht as erreicht_sub where erreicht_sub.linienr = erreicht.linienr) and erreicht.linienr = linie.linienr);

Answer details for exercise #8492 Exercise:

Setzen Sie das Attribut zustand auf den Wert 'entlassen' für alle Fahrer die mehr als 6 Unfälle hatten.

Your answer:

UPDATE fahrer SET zustand='entlassen' WHERE unfallzahl>6

Correct answer:

update fahrer set zustand='entlassen' where unfallzahl>6;

Answer details for exercise #8498 Exercise:

Eine neue Linie mit der Nr. 816 geht in Betrieb. Sie führt von der Starthaltestelle der Linie 111 zur Endhaltestelle der Linie 209. Fügen Sie die Linie in die Datenbank ein. Erstellen Sie den Datensatz unter Zuhilfenahme einer Select-Anweisung.

Your answer:

INSERT INTO linie(linienr,liniebeginnhaltestellenr, linieendhaltestellenr) VALUES(816, (SELECT liniebeginnhaltestellenr FROM linie WHERE linienr=111),(SELECT linieendhaltestellenr FROM linie WHERE linienr=209));

Correct answer:

insert into linie (linienr, liniebeginnhaltestellenr, linieendhaltestellenr) VALUES (816, (select haltestellenr from haltestelle join linie on haltestelle.haltestellenr = linie.liniebeginnhaltestellenr where linienr = 111), (select haltestellenr from haltestelle join linie on haltestelle.haltestellenr = linie.linieendhaltestellenr where linienr = 209));

Answer details for exercise #8500 Exercise:

Linie Nummer 1 ist unrentabel geworden und wird eingestellt. Daher müssen u.a. aus der Tabelle Leitet alle betroffenen Zeilen entfernt werden.

Your answer:

DELETE FROM leitet WHERE fahrtnr IN(SELECT fahrtnr FROM fahrt WHERE linienr=1);

Correct answer:

delete from Leitet where fahrtNr IN (select fahrtNr from Fahrt where linieNr = 1);

Answer details for exercise #8491 Exercise:

Alle Fahrer, die vor dem 1.1.1950 geboren worden sind, sollen in den Ruhestand und aus der Fahrertabelle gelöscht werden.

Your answer:

DELETE FROM fahrer WHERE geburtsdatum<'1950-01-01'

Correct answer:

delete from Fahrer where fahrerNr IN (select fahrerNr from Fahrer where geburtsdatum<'1950-01-01');


Answer details for exercise #8490 Exercise:

Infolge von Umstrukturierungsmaßnahmen sollen alle männlichen Fahrer in den Zustand 'entlassen' gesetzt werden

Your answer:

UPDATE fahrer SET zustand='entlassen' WHERE geschlecht='m'

Correct answer:

update fahrer set zustand='entlassen' where geschlecht='m'


Answer details for exercise #8486 Exercise:

Fügen Sie einen neuen Bus in die Tabelle Bus (id=999) ein, der am 01.04.2008 angeschafft wurde und der am 01.03.2009 zum nächsten Mal zum TÜV muss.

Your answer:

INSERT INTO bus(busnr, anschaffungstag, tuev) VALUES (999,'2008-04-01','2009-03-01');

Correct answer:

INSERT INTO Bus (busnr, tuev, anschaffungstag) VALUES (999, '2009-03-01', '2008-04-01');


Answer details for exercise #8501 Exercise:

Linie Nummer 8 ist unrentabel geworden und wird eingestellt. Daher müssen u.a. aus der Tabelle Leitet alle betroffenen Zeilen entfernt werden.

Your answer:

DELETE FROM leitet l WHERE fahrtnr IN(SELECT fahrtnr FROM fahrt WHERE linienr='8');

Correct answer:

delete from Leitet where fahrtNr IN (select fahrtNr from Fahrt where linieNr = 8);


Answer details for exercise #8493 Exercise:

Die in der Datenbank abgespeicherte Unfallzahl von der Faherin mit der Fahrernr 21684 ist nicht korrekt. Setzen Sie sie auf 0.

Your answer:

UPDATE fahrer SET unfallzahl=0 WHERE fahrernr=21684

Correct answer:

update fahrer set unfallzahl = 0 where fahrernr = 21684;


Answer details for exercise #8497 Exercise:

Die Fahrerin mit der Fahrernr 20644 ist wiederholt Mutter geworden. Erhöhen Sie ihre in der Datenbank abgespeicherte Kinderanzahl um eins.

Your answer:

UPDATE fahrer SET kinderanzahl=kinderanzahl+1 WHERE fahrernr=20644

Correct answer:

update fahrer set kinderanzahl = kinderanzahl +1 where fahrernr = 20644;


Aggregation[Bearbeiten]

Answer details for exercise #8453 Exercise:

Wie oft werden die Haltestellen durchschnittlich von unterschiedlichen Linien besucht.? Der Durchschnitt soll eine Ganzzahl sein. (Benutze die Funktion "ceil" für diesen Zweck).(Ausgabe: linieDurchschnitt)

Your answer:

SELECT ceil(avg((SELECT count(*) FROM erreicht e WHERE e.haltestellenr=h.haltestellenr))) AS linieDurchschnitt FROM haltestelle h;

Correct answer:

select ceil(avg(i)) as linieDurchschnitt from (select count(distinct linienr)as i from erreicht group by haltestellenr) as aa

Answer details for exercise #8442 Exercise:

Wieviele Busse gibt es insgesamt?

Your answer:

SELECT count(*) FROM bus;

Correct answer:

SELECT count(*) FROM bus;

Answer details for exercise #8452 Exercise:

Welche Haltestellen stehen in den Fahrplänen von mindestens 3 Linien. Ausgabe (haltestellenr, haltestellenname).

Your answer:

SELECT haltestellenr, haltestellenname FROM haltestelle h WHERE (SELECT count(*) FROM erreicht e WHERE h.haltestellenr=e.haltestellenr)>2;

Correct answer:

select haltestellenr, haltestellenname from haltestelle where haltestellenr in (select haltestellenr as aa from erreicht group by haltestellenr having count(*) >= 3 );

Answer details for exercise #8449 Exercise:

Zeige alle Fahrer an, die weniger als das durchschnittliche Grundgehalt verdienen.(Ausgabe: das ganze Fahrer-Tupel).

Your answer:

SELECT * FROM fahrer WHERE grundgehalt<(SELECT AVG(grundgehalt) FROM fahrer);

Correct answer:

select * from fahrer f where f.grundgehalt < (select avg(grundgehalt) from fahrer);

Answer details for exercise #8445 Exercise:

Wieviele Haltestellen gibt es? Benennungen von Ergebnisspalten sind nicht vorzunehmen.

Your answer:

SELECT COUNT(*) FROM haltestelle;

Correct answer:

SELECT count(*) FROM Haltestelle;

Answer details for exercise #8441 Exercise:

Ermittle die Anzahl aller Linien. Benennungen von Ergebnisspalten sind nicht vorzunehmen.

Your answer:

SELECT COUNT(*) FROM linie;

Correct answer:

select count(linieNr) from Linie;

Answer details for exercise #8439 Exercise:

Ermittle die durchschnittliche Unfallzahl aller Fahrer. Benennungen von Ergebnisspalten sind nicht vorzunehmen.

Your answer:

SELECT AVG(unfallzahl) FROM fahrer;

Correct answer:

select avg(unfallzahl) from Fahrer;

Answer details for exercise #8443 Exercise:

Ermittle das Alter (in Tagen von Typ Integer) aller Fahrer mit dem Ergebnistyp (alter, vorname, nachname, fahrernr).

Your answer:

SELECT ('2009-05-27'-geburtsdatum) AS alter, vorname, nachname, fahrernr FROM fahrer;

Correct answer:

select (current_date - geburtsdatum) as alter, vorname, nachname, fahrernr from Fahrer;


Answer details for exercise #8440 Exercise:

Wie hoch ist das höchste Grundgehalt der Fahrer? Der Ergebnis-Typ sei (hoechstGehalt).

Your answer:

SELECT MAX(grundgehalt)AS hoechstGehalt FROM fahrer;

Correct answer:

select max(grundgehalt) as hoechstGehalt from Fahrer;

Answer details for exercise #8444 Exercise:

Gib alle Fahrer aus, deren Vorname mit einem A beginnt. Ergebnistyp sei das volle Tupel.

Your answer:

SELECT * FROM fahrer WHERE vorname LIKE 'A%';

Correct answer:

select * from Fahrer where vorname like 'A%';

Answer details for exercise #8451 Exercise:

Welche Haltestellen stehen in den Fahrplänen von mindestens 4 Linien und zu der gleichen Anzahl. Ausgaube (haltestellenr1, haltestellenr2). Duplikate und Permutationen sind zu vermeiden. (haltestellenr1 soll kleiner als haltestellenr2 sein).

Your answer:

SELECT DISTINCT e1.haltestellenr AS haltestellenr1,e2.haltestellenr AS haltestellenr2 FROM erreicht e1 JOIN erreicht e2 ON (SELECT count(*) FROM erreicht e WHERE e1.haltestellenr=e.haltestellenr)>3 AND (SELECT count(*) FROM erreicht e WHERE e2.haltestellenr=e.haltestellenr)>3 AND (SELECT count(*) FROM erreicht e WHERE e1.haltestellenr=e.haltestellenr)=(SELECT count(*) FROM erreicht e WHERE e2.haltestellenr=e.haltestellenr) AND e1.haltestellenr<e2.haltestellenr;

Correct answer:

select distinct e1.haltestellenr as haltestellenr1, e2.haltestellenr as haltestellenr2 from erreicht e1, erreicht e2 where e1.haltestellenr < e2.haltestellenr and (select count(*) from erreicht where haltestellenr = e1.haltestellenr having count(*) > 3) = (select count(*) from erreicht where haltestellenr = e2.haltestellenr having count(*) > 3);


Answer details for exercise #8434 Exercise:

Ermittle das Durchschnittsgrundgehalt aller Fahrer. Benennungen von Ergebnisspalten sind nicht vorzunehmen.

Your answer:

SELECT AVG(grundgehalt) FROM fahrer;

Correct answer:

select avg(grundgehalt) from Fahrer;

Answer details for exercise #8435 Exercise:

Gib alle Fahrer aus, deren Nachname mit einem P beginnt. Ergebnistyp sei das volle Tupel.

Your answer:

SELECT * FROM fahrer WHERE nachname LIKE 'P%';

Correct answer:

select * from Fahrer where nachname like 'P%';

Answer details for exercise #8446 Exercise:

Gebe jeden Fahrernamen zusammen mit seinem Gesamtgehalt (bestehend aus Grundgehalt und Kinderzulage) aus. Ergebnistyp sei (vorname, nachname,gesamtgehalt).

Your answer:

SELECT vorname,nachname,(grundgehalt+kinderzulage) AS gesamtgehalt FROM fahrer;

Correct answer:

select vorname, nachname, (grundgehalt + kinderzulage) as gesamtgehalt from Fahrer;

Answer details for exercise #8447 Exercise:

Ermittle das Durchschnittsgrundgehalt aller männlichen Fahrer. Benennungen von Ergebnisspalten sind nicht vorzunehmen.

Your answer:

SELECT AVG(grundgehalt) FROM fahrer WHERE geschlecht='m';

Correct answer:

select avg(grundgehalt) from Fahrer where geschlecht='m';

Answer details for exercise #8437 Exercise:

Was ist die höhste Anzahl an Unfällen, in die ein weiblicher Fahrer verwickelt war? Benennungen von Ergebnisspalten sind nicht vorzunehmen.

Your answer:

SELECT MAX(unfallzahl) FROM fahrer WHERE geschlecht='w';

Correct answer:

select max(unfallzahl) from Fahrer where geschlecht='w';

Answer details for exercise #8450 Exercise:

Welche Haltestellen stehen in den Fahrplänen von mindestens 3 Linien und zu der gleichen Anzahl. Ausgaube (haltestellenr1, haltestellenr2, anzahlderLinien ). Duplikate und Permutationen sind zu vermeiden. (haltestellenr1 soll kleiner als haltestellenr2 sein).

Your answer:

SELECT DISTINCT e1.haltestellenr AS haltestellenr1,e2.haltestellenr AS haltestellenr2, (SELECT count(*) FROM erreicht e WHERE e2.haltestellenr=e.haltestellenr) AS anzahlderLinien FROM erreicht e1 JOIN erreicht e2 ON (SELECT count(*) FROM erreicht e WHERE e1.haltestellenr=e.haltestellenr)>2 AND (SELECT count(*) FROM erreicht e WHERE e2.haltestellenr=e.haltestellenr)>2 AND (SELECT count(*) FROM erreicht e WHERE e1.haltestellenr=e.haltestellenr)=(SELECT count(*) FROM erreicht e WHERE e2.haltestellenr=e.haltestellenr) AND e1.haltestellenr<e2.haltestellenr;


Correct answer:

select distinct e1.haltestellenr as haltestellenr1, e2.haltestellenr as haltestellenr2, cc.anzahlderLinien from erreicht e1, erreicht e2, (select haltestellenr as hh, count(*) as anzahlderLinien from erreicht group by haltestellenr ) as cc where e1.haltestellenr < e2.haltestellenr and cc.hh = e1.haltestellenr and (select count(*) from erreicht where haltestellenr = e1.haltestellenr having count(*) > 2) = (select count(*) from erreicht where haltestellenr = e2.haltestellenr having count(*) > 2);


Answer details for exercise #8436 Exercise:

An wievielen unterschiedlichen Tagen wurden Busse angeschafft? (Ausgabe: AnzahlTage)

Your answer:

SELECT COUNT(DISTINCT anschaffungstag) FROM bus;

Correct answer:

select count(distinct anschaffungstag) as AnzahlTage from Bus;


Answer details for exercise #8448 Exercise:

Wieviele maennliche Fahrer gibt es?

Your answer:

SELECT COUNT(fahrernr) FROM fahrer WHERE geschlecht='m';

Correct answer:

SELECT count(*) FROM Fahrer where geschlecht = 'm';

Answer details for exercise #8438 Exercise:

Gib alle Fahrer aus, deren Name mit einem S beginnt. Ergebnistyp sei das volle Tupel.

Your answer:

SELECT * FROM fahrer WHERE nachname LIKE 'S%';

Correct answer:

select * from Fahrer where nachname like 'S%';

= Mengen

Answer details for exercise #8480 Exercise:

Welche Linien fahren über 'Hirschlandplatz' und enden in 'Margarethenhöhe'. Ausgabe(Alle Attribute von Linie)

Your answer:

SELECT * FROM linie WHERE linienr IN (SELECT linienr FROM erreicht WHERE haltestellenr=(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Hirschlandplatz')) AND linieendhaltestellenr=(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Margarethenhöhe')

Correct answer:

select l.* from linie l, haltestelle sh1 where l.linieendhaltestellenr = sh1.haltestellenr and haltestellenname = 'Margarethenhöhe' and exists (select * from erreicht natural join haltestelle where linienr = l.linienr and haltestellenname = 'Hirschlandplatz');


Answer details for exercise #8484 Exercise:

Geben Sie alle Busse aus, die NICHT auf Fahrten eingesetzt werden. Die Ergebnisrelation soll alle Attribute der Bus-Relation anzeigen.

Your answer:

SELECT * FROM bus WHERE busnr NOT IN(SELECT DISTINCT busnr FROM fahrt)

Correct answer:

SELECT * FROM bus where busnr NOT IN (SELECT busnr from fahrt);

Answer details for exercise #8481 Exercise:

Welche Linien fahren über starten von 'Altenessen Mitte' und fahren über 'Hirschlandplatz'.Ausgabe(Alle Attribute von Linie).

Your answer:

SELECT * FROM linie WHERE linienr IN (SELECT linienr FROM erreicht WHERE haltestellenr=(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Hirschlandplatz')) AND liniebeginnhaltestellenr=(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Altenessen Mitte')


Correct answer:

select l.* from linie l, haltestelle sh1 where l.liniebeginnhaltestellenr = sh1.haltestellenr and haltestellenname = 'Altenessen Mitte' and exists (select * from erreicht natural join haltestelle where linienr = l.linienr and haltestellenname = 'Hirschlandplatz') ;


Answer details for exercise #8483 Exercise:

Welche Haltestellen sind in den Fahrplänen von den Linien 111 und 118 beinhaltet? Ausgabe(haltestellenr,haltestellenname).

Your answer:

SELECT DISTINCT haltestellenr,haltestellenname FROM erreicht NATURAL JOIN haltestelle WHERE haltestellenr IN(SELECT haltestellenr FROM erreicht WHERE linienr=111) AND haltestellenr IN(SELECT haltestellenr FROM erreicht WHERE linienr=118);

Correct answer:

select haltestellenr, haltestellenname from erreicht natural join haltestelle where linienr = 111 and haltestellenr in (select haltestellenr from erreicht where linienr = 118);

Answer details for exercise #8482 Exercise:

Welche Haltestellen sind exclusiv im Fahrplan einer bestimmten Linie beinhaltet ? (Die Haltestellen dürfen nicht in den Fahrplänen anderer Linie vorhanden sein).Ausgabe (Linienr,haltestellenr).

Your answer:

Correct answer:

select linienr, haltestellenr from erreicht e where haltestellenr not in (select haltestellenr from erreicht where linienr <> e.linienr);

Answer details for exercise #8485 Exercise:

Geben Sie alle Fahrer aus, die derzeit nicht auf Fahrten eingesetzt werden.

Your answer:

SELECT * FROM fahrer WHERE fahrernr NOT IN(SELECT DISTINCT fahrernr FROM leitet);

Correct answer:

select * from fahrer where fahrernr not in (select fahrernr from fahrer natural join leitet);

Verbund[Bearbeiten]

Answer details for exercise #8479 Exercise:

Der Fahrer mit der Fahrernr 20941 möchte die Namen aller Haltestellen wissen, die er anfährt. Es sollen keine doppelten Haltestellen ausgegeben werden. (Ausgabe: haltestellenName)

Your answer:

SELECT h.haltestellenname AS haltestellenname FROM leitet l JOIN fahrt f ON f.fahrtnr=l.fahrtnr JOIN erreicht e ON f.linienr=e.linienr JOIN haltestelle h ON e.haltestellenr=h.haltestellenr WHERE l.fahrernr=20941;

Correct answer:

select distinct haltestellenName from Fahrt natural join Leitet natural join erreicht natural join Haltestelle where fahrernr = 20941;


Answer details for exercise #8472 Exercise:

Welche Fahrer haben den gleichen Vornamen? Die Ergebnistabelle soll folgendes Schema besitzen (fahrernr1, fahrernr2, vorname). Die Fahrernr1 muss immer kleiner als die Fahrernr2 sein.

Your answer:

SELECT f1.fahrernr AS fahrernr1, f2.fahrernr AS fahrernr2, f1.vorname AS vorname FROM fahrer f1 JOIN fahrer f2 ON f1.fahrernr<f2.fahrernr AND f1.vorname=f2.vorname;

Correct answer:

select Fahrer1.fahrerNr as fahrernr1, Fahrer2.fahrerNr as fahrernr2, Fahrer1.vorname from Fahrer as Fahrer1 join Fahrer AS Fahrer2 ON (Fahrer1.vorname = Fahrer2.vorname AND Fahrer1.fahrerNr < Fahrer2.fahrerNr);


Answer details for exercise #8468 Exercise:

Welche Linie (linieNr) beginnt an der Haltestelle 'Altenessen Mitte'?

Your answer:

SELECT linienr FROM linie JOIN haltestelle ON liniebeginnhaltestellenr=haltestellenr AND haltestellenname='Altenessen Mitte';

Correct answer:

select linieNr from Haltestelle inner join Linie ON(linieBeginnHaltestelleNr = HaltestelleNr) where haltestellenname='Altenessen Mitte';


Answer details for exercise #8467 Exercise:

Gib für alle Linien ihre Haltestellennummern aus. Starthaltestellen sollen NICHT in der Ergebnistabelle erscheinen.

Your answer:

SELECT linienr,haltestellenr FROM linie NATURAL JOIN erreicht WHERE liniebeginnhaltestellenr!=haltestellenr;

Correct answer:

select linie.linieNr, haltestelleNr from Linie inner join Erreicht ON (linieBeginnHaltestelleNr <> haltestelleNr AND Linie.linieNr = Erreicht.linieNr);

Answer details for exercise #8465 Exercise:

Für den Bus Nr. 220 soll ermittelt werden, auf welchen Linien er eingesetzt wird. Die Ergebnistabell solle (busnr,linienr) anzeigen. Doppelte Datensätze sind zu eliminieren.

Your answer:

SELECT DISTINCT busnr, linienr FROM fahrt WHERE busnr=220;

Correct answer:

SELECT distinct busnr,linienr FROM bus natural join fahrt where linienr is not null and busnr=220;

Answer details for exercise #8476 Exercise:

Gertrud Espenlaub möchte die Namen aller Haltestellen wissen, die sie anfährt. Duplicate sind auszublenden.

Your answer:

SELECT DISTINCT h.haltestellenname AS haltestellenname FROM fahrer fr JOIN leitet l ON fr.fahrernr=l.fahrernr JOIN fahrt f ON f.fahrtnr=l.fahrtnr JOIN erreicht e ON f.linienr=e.linienr JOIN haltestelle h ON e.haltestellenr=h.haltestellenr WHERE vorname = 'Gertrud' AND nachname='Espenlaub';

Correct answer:

select distinct haltestellenName from Fahrt natural join Leitet natural join erreicht natural join Haltestelle join Fahrer on Leitet.fahrernr = Fahrer.fahrernr where vorname = 'Gertrud' and nachname = 'Espenlaub';

Answer details for exercise #8470 Exercise:

Welche Haltestellen werden von allen Linien angefahren, die auch den 'Rüttenscheider Stern' anfahren? Geben Sie die Haltestellennamen aus.

Your answer:

SELECT haltestellenname FROM (select haltestellenr from erreicht except select haltestellenr from (

(select * from (select linienr from linie natural join erreicht natural join haltestelle where haltestellenname = 'Rüttenscheider Stern') as foo
cross join (select haltestellenr from erreicht) as bar
)

except select linienr, haltestellenr from erreicht ) as foobar)t1 NATURAL JOIN haltestelle

Correct answer:

select haltestellenname from erreicht natural join haltestelle except select haltestellenname from ((select * from (select linienr from linie natural join erreicht natural join haltestelle where haltestellenname = 'Rüttenscheider Stern') as foo cross join (select haltestellenname from erreicht natural join haltestelle) as bar) except select linienr, haltestellenname from erreicht natural join haltestelle) as foobar;

Answer details for exercise #8464 Exercise:

An welchen Tagen werden die Fahrer (vorname, nachname, fahrernr, wochentag) eingesetzt?

Your answer:

SELECT DISTINCT vorname, nachname, fahrernr, wochentag FROM fahrer NATURAL JOIN leitet NATURAL JOIN fahrt;

Correct answer:

select distinct vorname, nachname, fahrerNr, wochentag from Fahrer natural join Leitet natural join Fahrt;

Answer details for exercise #8466 Exercise:

Gib eine Liste von Fahrern aus (fahrernr), deren Geburtsdatum gleich dem Einstellungsdatum eines anderen Fahers ist.

Your answer:

SELECT f1.fahrernr AS fahrernr FROM fahrer f1 JOIN fahrer f2 ON f1.fahrernr!=f2.fahrernr AND f1.geburtsdatum=f2.einstellung

Correct answer:

select fahrernr from fahrer where geburtsdatum in (select einstellung from fahrer);

Answer details for exercise #8478 Exercise:

Gib alle Linien mit ihren Beginn- und Endhaltestellen aus. (Ausgabe: linienr, Beginn, End).

Your answer:

SELECT l.linienr AS linienr,h1.haltestellenname AS Beginn,h2.haltestellenname AS End FROM linie l JOIN haltestelle h1 ON liniebeginnhaltestellenr=h1.haltestellenr JOIN haltestelle h2 ON linieendhaltestellenr=h2.haltestellenr

Correct answer:

select linienr, h1.haltestellenname as Beginn, h2.haltestellenname as End from linie, haltestelle h1, haltestelle h2 where liniebeginnhaltestellenr = h1.haltestellenr and linieendhaltestellenr = h2.haltestellenr;

Answer details for exercise #8471 Exercise:

Die Zentrale braucht für alle Fahrten Angaben darüber, ob und mit welchem Fahrer sie besetzt worden sind (für den Fall, dass Fahrten augenblicklich disponiert werden müssen). Ergebnis-Typ sei das gesamte Fahrt-Tupel gefolgt von der fahrernr. Insbesondere sollen auch Fahrten angezeigt werden, bei denen noch kein Fahrer feststeht.

Your answer:

SELECT f.*, l.fahrernr AS fahrernr FROM fahrt f NATURAL LEFT JOIN leitet l;

Correct answer:

select Fahrt.*, fahrerNr from Fahrt left outer join Leitet ON (Fahrt.fahrtNr = Leitet.fahrtNr);

Answer details for exercise #8469 Exercise:

Welche weiblichen Fahrer haben den gleichen Vornamen? Die Ergebnistabelle soll folgendes Schema besitzen (fahrernr1, fahrernr2, vorname). Die Fahrernr1 muss immer kleiner als die Fahrernr2 sein.

Your answer:

SELECT f1.fahrernr AS fahrernr1, f2.fahrernr AS fahrernr2, f1.vorname AS vorname FROM fahrer f1 JOIN fahrer f2 ON f1.vorname=f2.vorname AND f1.fahrernr<f2.fahrernr WHERE f1.geschlecht='w' AND f2.geschlecht='w'

Correct answer:

select Fahrer1.fahrerNr as fahrernr1, Fahrer2.fahrerNr as fahrernr2, Fahrer1.vorname from Fahrer as Fahrer1 join Fahrer AS Fahrer2 ON (Fahrer1.vorname = Fahrer2.vorname AND Fahrer1.fahrerNr < Fahrer2.fahrerNr) where fahrer1.geschlecht = 'w' and fahrer2.geschlecht = 'w';

Answer details for exercise #8477 Exercise:

Für welche Linien werden die einzelnen Fahrer eingesetzt? Erzeuge eine Ergebnistabelle vom Typ (fahrerNr, linieNr). Duplikate sollen nicht angezeigt werden.

Your answer:

SELECT DISTINCT fahrerNr, linieNr FROM leitet l JOIN fahrt f ON l.fahrtnr=f.fahrtnr;

Correct answer:

select distinct fahrerNr, LinieNr from Fahrt natural join Leitet;


Answer details for exercise #8475 Exercise:

Welche Fahrer mit Vornamen 'Heintje' haben ein unterschiedliches Geschlecht? (Ausgabe: vorname, fahrerNr1, geschlecht1, fahrerNr2, geschlecht2), Die Fahrernr1 muss immer kleiner als die Fahrernr2 sein.

Your answer:

SELECT f1.vorname AS vorname, f1.fahrernr AS fahrerNr1, f1.geschlecht AS geschlecht1, f2.fahrernr AS fahrerNr2, f2.geschlecht AS geschlecht2 FROM fahrer f1 JOIN fahrer f2 ON f1.vorname=f2.vorname AND f1.vorname='Heintje' AND f1.geschlecht!=f2.geschlecht AND f1.fahrernr<f2.fahrernr

Correct answer:

select Fahrer1.vorname as vorname, Fahrer1.fahrerNr as fahrernr1, Fahrer1.geschlecht as geschlecht1, Fahrer2.fahrerNr as fahrernr2, Fahrer2.geschlecht as geschlecht2 from Fahrer as Fahrer1 join Fahrer AS Fahrer2 ON (Fahrer1.geschlecht <> Fahrer2.geschlecht AND Fahrer1.fahrerNr < Fahrer2.fahrerNr AND fahrer1.vorname='Heintje' and fahrer2.vorname='Heintje');


Answer details for exercise #8474 Exercise:

Welche Haltestellen werden von allen Linien angefahren, die auch den 'Hirschlandplatz' anfahren? Geben Sie nur die Haltestellenr aus

Your answer:

SELECT h.haltestellenr AS Haltestellenr FROM haltestelle h JOIN (SELECT Haltestellenr FROM erreicht WHERE linienr IN(SELECT linienr FROM erreicht WHERE haltestellenr IN(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Hirschlandplatz')) GROUP BY haltestellenr HAVING count(*)=(SELECT count(*) FROM erreicht WHERE haltestellenr IN(SELECT haltestellenr FROM haltestelle WHERE haltestellenname='Hirschlandplatz'))) t1 ON t1.haltestellenr=h.haltestellenr;

Correct answer:

select haltestellenr from erreicht except select haltestellenr from ((select * from (select linienr from linie natural join erreicht natural join haltestelle where haltestellenname = 'Hirschlandplatz') as foo cross join (select haltestellenr from erreicht) as bar) except select linienr, haltestellenr from erreicht) as foobar;

Group By[Bearbeiten]

Answer details for exercise #8461 Exercise:

Gib eine Liste mit dem Alter (in Jahren) der Fahrer aus - zusammen mit der entsprechenden Anzahl von Fahrern, die dieses Alter haben (1 Jahr = 365 Tage). Die Ausgaberelation hat die form (alter, anzahl).

Your answer:

SELECT ((CURRENT_DATE-geburtsdatum)/365) AS alter, count(*) AS anzahl FROM fahrer GROUP BY alter;

Correct answer:

select ((current_date-geburtsdatum)/365) as alter, count(*) as anzahl from fahrer group by alter;


Answer details for exercise #8462 Exercise:

Fuer jeden Bus soll ermittelt werden, bei wie vielen Fahrten (als 'anzahlFahrten') er eingesetzt wird. Die Ausgabe der busNr und anzahlFahrten ist ausreichend.

Your answer:

SELECT busnr AS busNr, count(*) AS anzahlFahrten FROM fahrt GROUP BY busnr;

Correct answer:

select busNr, count(fahrtNr) AS anzahlFahrten from Fahrt group by busNr;

Answer details for exercise #8460 Exercise:

Wie hoch ist das höchste Gesamtgehalt, welches die Kinderzulage einschließt? Die Ergebnistabelle soll die Spalte "hoechstgesamtgehalt" enthalten. Geben Sie in der Spalte "Anzahl" die Anzahl der Personen aus, die das H?¯???½chstgesamtgehalt erhalten.

Your answer:

SELECT count(*) AS Anzahl, (kinderzulage+grundgehalt) AS hoechstgesamtgehalt FROM fahrer WHERE (grundgehalt+kinderzulage)=(SELECT max(kinderzulage+grundgehalt) FROM fahrer) GROUP BY (kinderzulage+grundgehalt);

Correct answer:

select hoechstgesamtgehalt, count(*) as anzahl from (select grundgehalt+kinderzulage as hoechstgesamtgehalt, fahrernr from fahrer) as y natural join (select max(grundgehalt+kinderzulage) as hoechstgesamtgehalt from fahrer) as z group by hoechstgesamtgehalt;


Answer details for exercise #8459 Exercise:

Geben Sie die Häufigkeit der Kinderanzahl der Fahrer aus. Das Ergebnis soll aus (kinderanzahl, fahreranzahl) bestehen.

Your answer:

SELECT kinderanzahl, COUNT(fahrernr) AS fahreranzahl FROM fahrer GROUP BY kinderanzahl;

Correct answer:

SELECT kinderanzahl, count(*) as fahreranzahl FROM fahrer group by kinderanzahl;


Answer details for exercise #8463 Exercise:

Gib für jede Linie die Anzahl der Haltestellen aus. Ergebnis-Typ sei (linieNr, anzahlHaltestellen).

Your answer:

SELECT linienr, count(*) AS anzahlHaltestellen FROM erreicht GROUP BY linienr

Correct answer:

select linieNr, count(haltestelleNr) AS anzahlHaltestellen from Erreicht group by linieNr ;

SFW[Bearbeiten]

Answer details for exercise #8432 Exercise:

Gib alle männlichen Fahrer aus (alle Attribute).

Your answer:

SELECT * FROM fahrer WHERE geschlecht='m'

Correct answer:

select * from Fahrer where geschlecht='m'


Answer details for exercise #8422 Exercise:

Zeige all Busse an, die mindestens an 10 Fahrten beteiligt sind.Ausgabe(das gesamte Bus-tupel).

Your answer:

SELECT DISTINCT * FROM bus b WHERE (SELECT count(fahrtnr) FROM fahrt f WHERE f.busnr=b.busnr)>=10

Correct answer:

SELECT distinct * FROM bus b WHERE EXISTS (SELECT 'x' FROM fahrt WHERE busnr = b.busnr group by busnr having count(busnr) >= 10);


Answer details for exercise #8414 Exercise:

Ermittle den Anteil der Kinderzulage, den jedes Kind bekommt, wenn die Kinderzulage gleichwertig auf alle Kinder verteilte wird.(Achte daruf, Kinderanzahl kann 0 oder null sein). Ausgabe(kinderzulage, kinderanzahl, ZulageProKind).

Your answer:

SELECT kinderzulage, kinderanzahl, (kinderzulage/kinderanzahl) AS ZulageProKind FROM fahrer WHERE kinderanzahl>0 AND kinderanzahl IS NOT null AND kinderzulage>0;

Correct answer:

select kinderzulage, kinderanzahl, kinderzulage/kinderanzahl as ZulageProKind from fahrer where kinderanzahl <> 0 and kinderanzahl is not null and kinderzulage <> 0;


Answer details for exercise #8403 Exercise:

Ermittle alle weiblichen Fahrer, deren Zustand gesetzt ist (Ausgabe: alle Attribute)

Your answer:

SELECT * FROM fahrer WHERE geschlecht='w' AND zustand IS NOT NULL

Correct answer:

select * from fahrer where geschlecht ='w' and zustand is not null;


Answer details for exercise #8425 Exercise:

Welche Fahrer haben mehr Kinder als der Fahrer mit der Fahrernr. 19444? Ergebnis-Typ sei (vorname, nachname, fahrerNr, kinderanzahl).

Your answer:

SELECT vorname, nachname, fahrerNr, kinderanzahl FROM fahrer WHERE kinderanzahl>(SELECT kinderanzahl FROM fahrer WHERE fahrernr=19444);

Correct answer:

SELECT vorname , nachname , fahrerNr , kinderanzahl FROM Fahrer WHERE kinderanzahl > ( SELECT kinderanzahl FROM Fahrer WHERE 19444 = fahrerNr );


Answer details for exercise #8429 Exercise:

Zeige all Busse an, die mindestens an einer Fahrt beteiligt sind.Ausgabe(das gesamte Bus-tupel).

Your answer:

SELECT * FROM bus b WHERE (SELECT count(*) FROM fahrt f WHERE f.busnr=b.busnr)>0

Correct answer:

SELECT * FROM bus b WHERE EXISTS (SELECT 'x' FROM fahrt WHERE busnr = b.busnr);


Answer details for exercise #8430 Exercise:

Ermittle alle männliche Fahrer, die in Februar zwischen 1960 und 1982 geboren sind (Ausgabe: fahrerNr).

Your answer:

SELECT geburtsdatum FROM fahrer WHERE geschlecht='m' AND (extract(YEAR from geburtsdatum)BETWEEN 1960 AND 1982) AND extract(Month from geburtsdatum) = 2

Correct answer:

select fahrernr from fahrer where geschlecht = 'm' AND date_part('month', geburtsdatum) = 2 AND (date_part('year',geburtsdatum) between 1960 And 1982);


Answer details for exercise #8412 Exercise:

Welche Busse müssen im 2. Halbjahr 2008 zum Tuev? Rückgabe-Typ sei (busnr,tuev).

Your answer:

SELECT busnr,tuev FROM bus WHERE tuev between '2008-07-01' AND '2008-12-31'

Correct answer:

SELECT busnr,tuev FROM bus WHERE tuev between '2008-07-01' and '2008-12-31';


Answer details for exercise #8417 Exercise:

Bei welchen Bussen laeuft der tuev in den nächsten 365 Tagen ab? (Rückgabetyp = busnr)

Your answer:

SELECT busnr FROM bus WHERE tuev < (CURRENT_DATE+365) AND tuev>=CURRENT_DATE

Correct answer:

select busnr from bus where ((tuev-current_date) < (365)) and ((tuev-current_date) >= (0));


Answer details for exercise #8408 Exercise:

Die Kinderzulage der Fahrer werden um 15% erhöht.Die neue Kinderzulage soll angezeigt werden(Kein Upadate ist vorzunehmen).Ausgabe(vorname, nachname, kinderzulage,neukinderzuulage)

Your answer:

SELECT vorname, nachname, kinderzulage,(kinderzulage*1.15) AS neukinderzuulage FROM fahrer;

Correct answer:

select vorname, nachname, kinderzulage, (kinderzulage * 1.15) as neukinderzuulage from fahrer;


Answer details for exercise #8411 Exercise:

Welche Linien (linieNr) fahren montags ('Mo') oder donnerstags ('Do')? Ausgabeattribut sei linieNr.

Your answer:

SELECT DISTINCT linieNr FROM fahrt WHERE wochentag IN ('Mo','Do');

Correct answer:

select distinct linieNr from Fahrt where wochentag = 'Do' or wochentag='Mo';


Answer details for exercise #8410 Exercise:

Welcher Fahrer ist vor dem 1.1.1965 geboren? Ergebnistyp sei (vorname, nachname, fahrernr).

Your answer:

SELECT vorname, nachname, fahrernr FROM fahrer WHERE geburtsdatum<'1965-01-01';

Correct answer:

select vorname, nachname, fahrernr from Fahrer where geburtsdatum < '1965-01-01';


Answer details for exercise #8407 Exercise:

gib alle Fahrer aus.

Your answer:

SELECT * FROM fahrer;

Correct answer:

select * from Fahrer;


Answer details for exercise #8416 Exercise:

Ermittle das Alter alle weibliche Fahrer die jünger als 30 sind.Ausgabe(vorname, nachname, Alter) (Benutze die Funktion age).

Your answer:

SELECT vorname, nachname, age(geburtsdatum) AS Alter FROM Fahrer WHERE geschlecht='w' AND age(geburtsdatum)< INTERVAL '30 YEARS'

Correct answer:

select vorname, nachname, age(geburtsdatum) as Alter from fahrer where geschlecht ='w' AND extract(year from age(geburtsdatum)) < 30;


Answer details for exercise #8418 Exercise:

Ermittle die Fahrervornamen und alle unterschiedliche Fahrernachnamen, welche aus mindestens 4 Buchstaben bestehen, und mit 't' enden.

Your answer:

SELECT DISTINCT nachname,vorname,unfallzahl FROM fahrer WHERE nachname LIKE '%____t'

Correct answer:

select distinct nachname, vorname, unfallzahl from fahrer where nachname like '____%t';


Answer details for exercise #8423 Exercise:

Zeige alle Fahrten an, die die gleiche Linienummer sowie Busnummer haben, wie die Fahrten mit den Nummer (175,180). Ausgabe(das gesamte Fahrt-Tupel)

Your answer:

SELECT * FROM fahrt WHERE (linienr, busnr) IN(SELECT linienr, busnr FROM fahrt WHERE fahrtnr IN(175,180)) AND fahrtnr NOT IN(175,180)

Correct answer:

select * from fahrt where (linienr, busnr) in (select linienr, busnr from fahrt where fahrtnr in (175,180)) and fahrtnr not in(175,180);


Answer details for exercise #8433 Exercise:

Gib alle weiblichen Fahrer aus (alle Attribute).

Your answer:

SELECT * FROM fahrer WHERE geschlecht='w';

Correct answer:

select * from Fahrer where geschlecht='w'

Answer details for exercise #8424 Exercise:

Zeige alle Fahrer an, die die gleichen Kinderanzahl, Geschlecht und Unfallzah haben, wie der Fahrer mit der Nummer 19436. (Ausgabe: Gesamtes Fahrer-Tupel ohne den Fahrer mit der Nummer 19436).

Your answer:

SELECT * FROM Fahrer WHERE kinderanzahl IN(SELECT kinderanzahl FROM fahrer WHERE fahrernr=19436) AND geschlecht IN(SELECT geschlecht FROM fahrer WHERE fahrernr=19436) AND unfallzahl IN(SELECT unfallzahl FROM fahrer WHERE fahrernr=19436) AND fahrernr!=19436

Correct answer:

SELECT * FROM fahrer WHERE (kinderanzahl, geschlecht, unfallzahl) = (SELECT kinderanzahl, geschlecht, unfallzahl FROM fahrer WHERE fahrernr = 19436) AND fahrernr <> 19436;

Answer details for exercise #8413 Exercise:

Welche Busse sind jünger als 5 Jahre? (Rückgabetyp = busnr, 1 Jahr = 365 Tage).

Your answer:

SELECT busnr FROM bus WHERE age(anschaffungstag) < INTERVAL '5 YEARS';

Correct answer:

select busnr from bus where (current_date - anschaffungstag) < (365*5);


Answer details for exercise #8415 Exercise:

Welcher Fahrer ist nach dem 1.1.1980 geboren? Ergebnistyp sei (vorname, nachname, fahrernr)

Your answer:

SELECT vorname, nachname,fahrernr FROM fahrer WHERE geburtsdatum>'1980-01-01';

Correct answer:

select vorname, nachname, fahrernr from Fahrer where geburtsdatum >= '1980-01-01';

Answer details for exercise #8428 Exercise:

Geben Sie alle Fahrer mit mehr als 10 Unfällen aus (alle Attribute).

Your answer:

SELECT * FROM fahrer WHERE unfallzahl>10;

Correct answer:

SELECT * FROM fahrer WHERE unfallzahl>10;

Answer details for exercise #8431 Exercise:

Ermittle alle weiblichen Fahrer, die im Juli zwischen 1965 und 1985 geboren sind (nur die id soll ausgegeben werden).

Your answer:

SELECT fahrernr FROM fahrer WHERE EXTRACT(YEAR from geburtsdatum) BETWEEN 1965 AND 1985 AND EXTRACT(MONTH from geburtsdatum)=7 AND geschlecht='w'

Correct answer:

select fahrernr from fahrer where geschlecht = 'w' AND date_part('month', geburtsdatum) = 7 AND (date_part('year',geburtsdatum) between 1965 And 1985);

Answer details for exercise #8409 Exercise:

Ermittle unter Verwendung der Duplikateliminierung, an welchen Tagen (anschaffungstag) neue Busse angeschafft wurden; Ergebnistyp sei (anschaffungstag).

Your answer:

SELECT DISTINCT anschaffungstag FROM bus;

Correct answer:

select distinct anschaffungstag from Bus;

Answer details for exercise #8402 Exercise:

Welche (Hin)Fahrten beginnen zwischen 15:00 und 17:00 Uhr einschließlich? Rückgabe-Typ sei fahrtNr. Zeit im Format HH:MM:SS.

Your answer:

SELECT fahrtNr FROM fahrt WHERE hinfahrtbeginn BETWEEN '14:59:59' AND '17:00:01';

Correct answer:

select fahrtNr from Fahrt where hinfahrtbeginn between '15:00:00' and '17:00:00';


Answer details for exercise #8405 Exercise:

Welche Busse stehen im Depot, deren Tuev im Jahr 2008 abgelaufen ist, bzw. heute abläuft. Rückgabe-Typ sei (busnr,tuev).

Your answer:

SELECT busnr, tuev FROM bus WHERE tuev BETWEEN '2008-01-01' AND CURRENT_DATE;

Correct answer:

SELECT busnr,tuev FROM bus WHERE tuev between '2008-01-01' and current_date;


Answer details for exercise #8404 Exercise:

Ermittle alle weiblichen Fahrer die am Montag geboren sind (Ausgabe: alle Attribute).

Your answer:

SELECT * FROM fahrer WHERE geschlecht='w' AND extract(dow from geburtsdatum)=1;

Correct answer:

select * from fahrer where geschlecht = 'w' and EXTRACT(DOW FROM geburtsdatum) = 1;


Answer details for exercise #8420 Exercise:

Welche Busse müssen im Februar 2009 zum Tuev? Rückgabe-Typ sei (busnr,tuev).

Your answer:

SELECT busnr, tuev FROM bus WHERE tuev BETWEEN '2009-02-01' AND '2009-02-28';

Correct answer:

SELECT busnr,tuev FROM bus WHERE tuev between '2009-02-01' and '2009-02-28';


Answer details for exercise #8421 Exercise:

Welche Busse wurden seit 2006 bis heute angeschafft? Die Ausgabe der Busnr ist ausreichend.

Your answer:

SELECT busnr FROM bus WHERE anschaffungstag BETWEEN '2006-01-01' AND CURRENT_DATE

Correct answer:

SELECT busnr FROM bus WHERE anschaffungstag between '2006-01-01' and current_date;


Answer details for exercise #8426 Exercise:

Gib eine Liste aller Zustände von Fahrern aus und der Anzahl von Fahrern, die in diesem Zustand sind. Die Ausgaberelation soll die Form (zustand, anzahl) haben.

Your answer:

SELECT zustand, count(*) AS anzahl FROM fahrer GROUP BY zustand;

Correct answer:

select zustand, count(*) as anzahl from fahrer group by zustand;


Answer details for exercise #8427 Exercise:

Zeige das Alter (in Jahren) der Fahrer, die über 50 Jahre sind, zusammen mit der Anzahl von Fahrern, die dieses Alter haben, an. Berechne sie dabei die Jahre, indem Sie 365 Tage/Jahr unterstellen (1 Jahr = 365 Tage). Ausgabe(alter, anzahl).

Your answer:

SELECT ((CURRENT_DATE-geburtsdatum)/365) AS alter, count(*) AS anzahl FROM fahrer WHERE ((CURRENT_DATE-geburtsdatum)/365)>50 GROUP BY ((CURRENT_DATE-geburtsdatum)/365)

Correct answer:

select alter, count(*) as anzahl from (select ((current_date-geburtsdatum)/365) as alter from fahrer where ((current_date-geburtsdatum)/365)>50) as y group by y.alter;


Answer details for exercise #8419 Exercise:

Die Fahrergrundgehälter werden um 10% erhöht. Der neue Gehalt soll angezeigt werden(Kein Upadate ist vorzunehmen). Ausgabe(vorname, nachname, grundgehalt, neuergehalt).

Your answer:

SELECT vorname, nachname, grundgehalt, (grundgehalt*1.1) AS neuergehalt FROM fahrer;

Correct answer:

select vorname, nachname, grundgehalt, (grundgehalt * 1.1) as neuergehalt from fahrer;


Answer details for exercise #8406 Exercise:

Welche Busse müssen im 1. Quartal 2009 zum Tuev (Rückgabe busnr, tuev).

Your answer:

SELECT busnr,tuev FROM bus WHERE tuev between '2009-01-01' and '2009-03-31';

Correct answer:

SELECT busnr,tuev FROM bus WHERE tuev between '2009-01-01' and '2009-03-31';