Versicherung on Paper


In [1]:
%load_ext sql

In [2]:
%sql mysql://steinam:steinam@localhost/versicherung_complete


Out[2]:
'Connected: steinam@versicherung_complete'
  • Gesucht wird eine wiederholungsfreie Liste der Herstellerländer 3 P

In [5]:
%%sql 
-- meine Lösung

select distinct(Land) from Fahrzeughersteller;


5 rows affected.
Out[5]:
Land
Deutschland
Schweden
None
Frankreich

In [125]:
%%sql
-- deine Lösung
select fahrzeughersteller.Land 
from fahrzeughersteller 
group by fahrzeughersteller.Land 
;


5 rows affected.
Out[125]:
Land
None
Deutschland
Frankreich
Schweden
  • Listen Sie alle Fahrzeugtypen und die Anzahl Fahrzeuge dieses Typs, aber nur, wenn mehr als 2 Fahrzeuge des Typs vorhanden sind. Sortieren Sie die Ausgabe nach Fahrzeugtypen. 4 P

In [3]:
%%sql
-- meine Lösung
select fahrzeugtyp.Bezeichnung, count(fahrzeug.iD) as Anzahl
from fahrzeugtyp left join fahrzeug
on fahrzeugtyp.id = fahrzeug.fahrzeugtyp_id
group by fahrzeugtyp.bezeichnung
having count(Anzahl) > 2


1 rows affected.
Out[3]:
Bezeichnung Anzahl
Corsa 3

In [7]:
%%sql
select *, (select count(*) from fahrzeug 
           where fahrzeug.fahrzeugtyp_id = fahrzeugtyp.id) as Fahrzeuge 
from fahrzeugtyp 
having Fahrzeuge > 2
order by fahrzeugtyp.bezeichnung;


1 rows affected.
Out[7]:
ID Bezeichnung Hersteller_ID Fahrzeuge
5 Corsa 2 3
  • Ermittle die Namen und Vornamen der Mitarbeiter incl. Abteilungsname, deren Abteilung ihren Sitz in Dortmund oder Bochum hat.

In [8]:
%%sql
-- meine Lösung

-- select ID from Abteilung where Abteilung.Ort = 'Dortmund' or abteilung.Ort =  'Bochum'


select Name, vorname, Bezeichnung, Abteilung.ID, Mitarbeiter.Abteilung_ID, 
    Abteilung.Ort from Mitarbeiter inner join Abteilung 
on Mitarbeiter.Abteilung_ID = Abteilung.ID 
where Abteilung.Ort in('Dortmund', 'Bochum')
order by Name


14 rows affected.
Out[8]:
Name vorname Bezeichnung ID Abteilung_ID Ort
Aagenau Karolin Lagerhaltung 6 6 Bochum
Baber Yvonne Forschung und Entwicklung 12 12 Bochum
Carlsen Zacharias Forschung und Entwicklung 12 12 Bochum
Feyerabend Werner Kostenrechnung 3 3 Dortmund
Langmann Matthias Kostenplanung 4 4 Dortmund
Meyer Walter Anlagenbuchhaltung 2 2 Dortmund
Müller Kurt Finanzbuchhaltung 1 1 Dortmund
Nordmann Jörg Produktion 7 7 Bochum
Olschewski Pjotr Produktion 7 7 Bochum
Peters Michael Kostenplanung 4 4 Dortmund
Pinkart Petra Lagerhaltung 6 6 Bochum
Schmitz Michael Anlagenbuchhaltung 2 2 Dortmund
Schneider Daniela Finanzbuchhaltung 1 1 Dortmund
Wagner Gaby Kostenrechnung 3 3 Dortmund

In [11]:
%%sql
-- deine Lösung
select mitarbeiter.Name, mitarbeiter.Vorname, 
    (select abteilung.bezeichnung 
         from abteilung where abteilung.id = mitarbeiter.abteilung_id) as Abteilung, 
    (select abteilung.ort 
         from abteilung where abteilung.id = mitarbeiter.abteilung_id) as Standort 
from mitarbeiter having Standort = "Dortmund" or Standort = "Bochum";


14 rows affected.
Out[11]:
Name Vorname Abteilung Standort
Müller Kurt Finanzbuchhaltung Dortmund
Schneider Daniela Finanzbuchhaltung Dortmund
Meyer Walter Anlagenbuchhaltung Dortmund
Schmitz Michael Anlagenbuchhaltung Dortmund
Wagner Gaby Kostenrechnung Dortmund
Feyerabend Werner Kostenrechnung Dortmund
Langmann Matthias Kostenplanung Dortmund
Peters Michael Kostenplanung Dortmund
Aagenau Karolin Lagerhaltung Bochum
Pinkart Petra Lagerhaltung Bochum
Olschewski Pjotr Produktion Bochum
Nordmann Jörg Produktion Bochum
Carlsen Zacharias Forschung und Entwicklung Bochum
Baber Yvonne Forschung und Entwicklung Bochum
  • Gesucht wird für jeden Fahrzeughersteller (Angabe der ID reicht) und jedes Jahr die kleinste und größte Schadenshöhe. Geben Sie falls möglich auch die Differenz zwischen den beiden Werten mit in der jeweiligen Ergebnismenge aus. Ansonsten erzeugen Sie für diese Aufgabe ein eigenes sql-Statement. 5 P

In [12]:
%%sql

-- meine Lösung
select fahrzeughersteller.id, year(datum) as Jahr, 
    min(zuordnung_sf_fz.schadenshoehe), 
    max(zuordnung_sf_fz.Schadenshoehe), 
    (max(zuordnung_sf_fz.schadenshoehe) - min(zuordnung_sf_fz.schadenshoehe)) as Differenz
from fahrzeughersteller left join fahrzeugtyp 
    on fahrzeughersteller.id = fahrzeugtyp.hersteller_ID
inner join fahrzeug on fahrzeugtyp.id = fahrzeug.fahrzeugtyp_id
    inner join zuordnung_sf_fz
        on fahrzeug.id = zuordnung_sf_fz.fahrzeug_id
    inner join schadensfall on schadensfall.id = zuordnung_sf_fz.schadensfall_id
group by fahrzeughersteller.id, year(datum)


11 rows affected.
Out[12]:
id Jahr min(zuordnung_sf_fz.schadenshoehe) max(zuordnung_sf_fz.Schadenshoehe) Differenz
2 2007 1234.50 1234.50 0.00
2 2008 1234.50 1251.50 17.00
2 2009 2653.40 2653.40 0.00
3 2007 2276.85 2276.85 0.00
7 2008 731.50 731.50 0.00
9 2007 852.00 852.00 0.00
9 2009 1438.75 1438.75 0.00
10 2007 1214.00 1214.00 0.00
10 2008 1983.00 1983.00 0.00
10 2009 865.00 865.00 0.00
11 2007 1438.75 1438.75 0.00

In [13]:
%%sql
-- redigierte Version von Wortmann geht

select 

fahrzeughersteller.Name,
(select min(zuordnung_sf_fz.schadenshoehe) from zuordnung_sf_fz 
	where zuordnung_sf_fz.fahrzeug_id in(
		select fahrzeug.id from fahrzeug 
		where fahrzeug.fahrzeugtyp_id in(
			select fahrzeugtyp.id from fahrzeugtyp 
			where fahrzeugtyp.hersteller_id = fahrzeughersteller.id 
		)
	)
) as Kleinste,
(select max(zuordnung_sf_fz.schadenshoehe) from zuordnung_sf_fz 
	where zuordnung_sf_fz.fahrzeug_id in(
		select fahrzeug.id from fahrzeug 
		where fahrzeug.fahrzeugtyp_id in(
			select fahrzeugtyp.id from fahrzeugtyp 
			where fahrzeugtyp.hersteller_id = fahrzeughersteller.id 
		)
	)
) as `Groesste`
from fahrzeughersteller;


11 rows affected.
Out[13]:
Name Kleinste Groesste
Volkswagen None None
Opel 1234.50 2653.40
Ford 2276.85 2276.85
BMW None None
Audi None None
Mercedes-Benz None None
Sachsenring 731.50 731.50
Saab None None
Volvo 852.00 1438.75
Renault 865.00 1983.00
Seat 1438.75 1438.75
  • Zeige alle Mitarbeiter und deren Autokennzeichen, die als Dienstwagen einen Opel fahren.
                                          4 P

In [14]:
%%sql
select Mitarbeiter.Name, dienstwagen.Kennzeichen
from Mitarbeiter inner join dienstwagen
on mitarbeiter.id = dienstwagen.Mitarbeiter_id
inner join fahrzeugtyp 
    on dienstwagen.fahrzeugtyp_Id = fahrzeugtyp.id
    inner join fahrzeughersteller
        on fahrzeugtyp.hersteller_id = fahrzeughersteller.id
where Fahrzeughersteller.NAme = 'Opel'


2 rows affected.
Out[14]:
Name Kennzeichen
Kalman DO-WB 354
Kolic DO-WB 384

In [15]:
%%sql
select * from mitarbeiter 
where mitarbeiter.id in(
	select dienstwagen.mitarbeiter_id from dienstwagen 
	where 
		dienstwagen.mitarbeiter_id = mitarbeiter.id 
		and dienstwagen.fahrzeugtyp_id in(
			select fahrzeugtyp.id from fahrzeugtyp
			where fahrzeugtyp.hersteller_id in(
				select fahrzeughersteller.id from fahrzeughersteller
				where fahrzeughersteller.name = "Opel"
			)
		)
)


2 rows affected.
Out[15]:
ID Personalnummer Name Vorname Geburtsdatum Telefon Mobil Email Raum Ist_Leiter Abteilung_ID Geschlecht
12 50004 Kalman Aydin 1976-12-17 0201/4014728 (0161) 4486319 aydin.kalman@unserefirma.de 155 N 5 M
20 80004 Kolic Ivana 1971-02-14 0201/4012181 (0172) 4680135 Ivana.Kolic@unserefirma.de 104 N 8 W
  • Welche Fahrzeuge haben Schäden verursacht, deren Schadenssumme höher als die durchschnittliche Schadenshöhe sind. 5 P

In [16]:
%%sql

select fahrzeug.kennzeichen, sum(schadenshoehe)
from fahrzeug inner join zuordnung_sf_fz
on fahrzeug.id = zuordnung_sf_fz.fahrzeug_id
group by fahrzeug.kennzeichen
having sum(schadenshoehe) > (select avg(schadenshoehe) from zuordnung_sf_fz)


6 rows affected.
Out[16]:
kennzeichen sum(schadenshoehe)
BO-GH 102 2290.75
GE-AB 123 1438.75
K-XR 147 2276.85
RE-CD 456 3197.00
RE-LM 902 2486.00
RE-LM 903 2653.40

In [17]:
%%sql

-- deine Lösung Wortmann
/*
select * from fahrzeug having fahrzeug.id in(
	select zuordnung_sf_zf.fahrzeugtyp_id from zuordnung_sf_zf 
	where zuordnung_sf_zf.schadenhoehe > ((select sum(zuordnung_sf_zf.schadenhoehe) from zuordnung_sf_zf)) / (select count(*) from zuordnung_sf_zf))


*/

select * from fahrzeug having fahrzeug.id in(
	select zuordnung_sf_fz.fahrzeug_id from zuordnung_sf_fz 
	where zuordnung_sf_fz.schadenshoehe > ((select sum(zuordnung_sf_fz.schadenshoehe) from zuordnung_sf_fz)) / (select count(*) from zuordnung_sf_fz))


5 rows affected.
Out[17]:
ID Kennzeichen Farbe Fahrzeugtyp_ID
3 RE-LM 903 ocker 5
4 GE-AB 123 schwarz 22
5 RE-CD 456 ocker 21
7 BO-GH 102 rot 19
24 K-XR 147 None 6
  • Welche Mitarbeiter sind älter als das Durchschnittsalter der Mitarbeiter. 4 P

In [19]:
%%sql

select Mitarbeiter.Name, Mitarbeiter.Geburtsdatum
from Mitarbeiter
where Geburtsdatum < (select avg(Geburtsdatum) from Mitarbeiter ma)   
order by Mitarbeiter.Name


15 rows affected.
Out[19]:
Name Geburtsdatum
Deiters 1989-08-26
Eggert 1986-07-23
Feyerabend 1982-04-01
Friedrichsen 1983-06-20
Grosser 1980-05-17
Hinkel 1977-04-16
Janssen 1974-03-15
Kalman 1976-12-17
Kolic 1971-02-14
Langmann 1976-03-28
Müller 1977-01-05
Peters 1973-11-15
Pohl 1980-10-27
Schneider 1980-02-16
Wagner 1970-01-18

In [21]:
%%sql
-- geht auch
select ma.Name, ma.Geburtsdatum
from Mitarbeiter ma
where (now() - ma.Geburtsdatum) > (now() - (select avg(geburtsdatum) from mitarbeiter))
order by ma.Name;


13 rows affected.
Out[21]:
Name Geburtsdatum
Aagenau 1950-01-02
Aliman 1965-11-12
Baber 1957-10-02
Braun 1966-09-05
Carlsen 1965-09-29
Langer 1968-01-13
Meyer 1963-07-02
Nordmann 1959-07-08
Olschewski 1956-05-06
Pinkart 1953-03-04
Polovic 1961-11-26
Schindler 1962-09-10
Schmitz 1959-08-25

In [22]:
%%sql
-- deine Lösung Wortmann

select * from mitarbeiter 
    having mitarbeiter.geburtsdatum < (select sum(mitarbeiter.geburtsdatum) from mitarbeiter) / (select count(*) from mitarbeiter)


13 rows affected.
Out[22]:
ID Personalnummer Name Vorname Geburtsdatum Telefon Mobil Email Raum Ist_Leiter Abteilung_ID Geschlecht
3 20001 Meyer Walter 1963-07-02 0231/5553967 None walter.meyer@unserefirma.de 212 J 2 M
4 20002 Schmitz Michael 1959-08-25 0231/5556187 None michael.schmitz@unserefirma.de 212 N 2 M
10 50002 Braun Christian 1966-09-05 0201/4014726 (0170) 8351647 christian.braun@unserefirma.de 153 N 5 M
11 50003 Polovic Frantisek 1961-11-26 0201/4014727 (0161) 5124793 frantisek.polovic@unserefirma.de 154 N 5 M
13 60001 Aagenau Karolin 1950-01-02 0234/66006001 None Karolin.Aagenau@unserefirma.de 48 J 6 W
14 60002 Pinkart Petra 1953-03-04 0234/66006002 None Petra.Pinkart@unserefirma.de 43 N 6 W
15 70001 Olschewski Pjotr 1956-05-06 0234/66007001 None Pjotr.Olschewski@unserefirma.de 28 J 7 M
16 70002 Nordmann Jörg 1959-07-08 0234/66007002 None Joerg.Nordmann@unserefirma.de 27 N 7 M
17 80001 Schindler Christina 1962-09-10 0201/4012151 (0173) 7513901 Christina.Schindler@unserefirma.de 101 J 8 W
18 80002 Aliman Zafer 1965-11-12 0201/4012161 (0171) 9416755 Zafer.Aliman@unserefirma.de 102 N 8 M
19 80003 Langer Norbert 1968-01-13 0201/4012171 (0162) 1357902 Norbert.Langer@unserefirma.de 103 N 8 M
27 120001 Carlsen Zacharias 1965-09-29 0234/66012001 None Zacharias.Carlsen@unserefirma.de 61 J 12 M
28 120002 Baber Yvonne 1957-10-02 0234/66012002 None Yvonne.Baber@unserefirma.de 62 N 12 W