-
Notifications
You must be signed in to change notification settings - Fork 0
/
SELECT.sql
96 lines (92 loc) · 2.63 KB
/
SELECT.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/* Alle Mitarbeiter die in den Ferien sind */
SELECT
PNR,
Name,
Vorname,
Erster_Urlaubstag,
Letzter_Urlaubstag,
GenehmigungsStatus,
Genutzte_Ferientage
FROM
Mitarbeiter
LEFT JOIN FERIEN ON Mitarbeiter.PNR = FERIEN.MitarbeiterID
WHERE
Erster_Urlaubstag <= NOW
AND Letzter_Urlaubstag >= NOW
AND GenehmigungsStatus = 2;
/* Alle Mitarbeiter die schon länger als 10 Jahre bei der Firma arbeiten inkl. Bonus und Gehalt */
SELECT
PNR,
Name,
Vorname,
Bonus_Prozent,
GEH * (1.00 + (1.00 * Bonus_Prozent / 100.00)) AS Gehalt
FROM
MITARBEITER
LEFT JOIN BONUS ON MITARBEITER.BonusID = BONUS.BID
LEFT JOIN GEHALTSGRUPPE ON MITARBEITER.GehaltsgruppeID = GEHALTSGRUPPE.GID
WHERE
DATEDIFF(YEAR, Eintrittsdatum, CURRENT_DATE) >= 10;
/* Minimale und maximale Gehaltsgruppe der Abteilungsleiter */
SELECT
ABTEILUNG.Kurzbezeichnung,
ABTEILUNG.Bezeichnung,
MITARBEITER.Name,
MITARBEITER.Vorname,
GEHALTSGRUPPE.GEH,
GEHALTSGRUPPE.GID
FROM
MITARBEITER
LEFT JOIN GEHALTSGRUPPE ON GEHALTSGRUPPE.GID = MITARBEITER.GehaltsgruppeID
LEFT JOIN ABTEILUNG ON ABTEILUNG.AID = MITARBEITER.AbteilungsID
LEFT JOIN ABTEILUNGSLEITER ON ABTEILUNGSLEITER.MitarbeiterID = MITARBEITER.PNR
WHERE
(
GEHALTSGRUPPE.GEH IN (
SELECT
MIN(GEH)
FROM
GEHALTSGRUPPE
INNER JOIN MITARBEITER ON MITARBEITER.GehaltsgruppeID = GEHALTSGRUPPE.GID
INNER JOIN ABTEILUNGSLEITER ON MITARBEITER.PNR = ABTEILUNGSLEITER.MitarbeiterID
)
OR GEHALTSGRUPPE.GEH IN (
SELECT
MAX(GEH)
FROM
GEHALTSGRUPPE
INNER JOIN MITARBEITER ON MITARBEITER.GehaltsgruppeID = GEHALTSGRUPPE.GID
INNER JOIN ABTEILUNGSLEITER ON MITARBEITER.PNR = ABTEILUNGSLEITER.MitarbeiterID
)
)
AND ABTEILUNGSLEITER.MitarbeiterID = MITARBEITER.PNR;
/* Die drei meist durch Projekte ausgelastetsten Mitarbeiter */
SELECT
PNR,
Name,
Vorname,
COUNT(*) AS Anzahl_Projekte
FROM
MITARBEITER
LEFT JOIN PROJEKT_MITARBEITER ON MITARBEITER.PNR = PROJEKT_MITARBEITER.MitarbeiterID
GROUP BY
PNR,
Name,
Vorname
ORDER BY
Count(*) DESC
LIMIT
3;
/* Alle Mitarbeiter einer Gehaltsgrupper sowie das kalkulierte gehalt */
SELECT
PNR,
Name,
Vorname,
GEH * (1.00 + (1.00 * Bonus_Prozent / 100.00)) AS Kalkuliertes_Gehalt,
Bonus_Prozent
FROM
MITARBEITER
LEFT JOIN GEHALTSGRUPPE ON MITARBEITER.GehaltsgruppeID = GEHALTSGRUPPE.GID
LEFT JOIN BONUS ON MITARBEITER.BonusID = BONUS.BID
WHERE
GID = 20;