🔒
Level 3 gesperrt
Schließe zuerst SQL Island Level 2 ab um dieses Level freizuschalten.
SQL Island 🏝️ Level 3
0 P
×1
❤️❤️❤️
–
📌 SQL-Nachschlagewerk & Notizen
▶ Intro
SQL Island – Level 3
Ein interaktives SQL-Abenteuer


1
–
+10 P
–
💡Tipp anzeigen
itfirma.db — Terminal
-- Willkommen im IT-Firmensystem. Schreib deine Abfrage.
›
Strg+Enter
MITARBEITER (mid, name, abteilung, gehalt, vorgesetzter_mid, einstellungsdatum)
ABTEILUNG (aid, name, leiter_mid, budget)
PROJEKT (pid, name, status, budget, abteilung)
ZUWEISUNG (mid, pid, rolle, stunden)
TICKET (tid, titel, bearbeiter_mid, prioritaet, status, erstellt)
SQL-Hilfe – Level 3
Alle neuen Konzepte in Level 3.
Window Functions – RANK, ROW_NUMBER, SUM OVER
SELECT NAME, GEHALT,
RANK() OVER (ORDER BY GEHALT DESC) AS RANG,
ROW_NUMBER() OVER (ORDER BY GEHALT DESC) AS ZEILE,
SUM(GEHALT) OVER () AS GESAMTGEHALT
FROM MITARBEITER;
-- Mit PARTITION BY (pro Abteilung):
SELECT NAME, ABTEILUNG, GEHALT,
RANK() OVER (PARTITION BY ABTEILUNG ORDER BY GEHALT DESC) AS RANG_IN_ABT
FROM MITARBEITER;
CTE – WITH ... AS
WITH TOPVERDIENER AS (
SELECT * FROM MITARBEITER WHERE GEHALT > 4000
),
IHRE_PROJEKTE AS (
SELECT z.* FROM ZUWEISUNG z
JOIN TOPVERDIENER t ON t.MID = z.MID
)
SELECT * FROM IHRE_PROJEKTE;
EXISTS / NOT EXISTS
-- Mitarbeiter die auf einem Projekt arbeiten:
SELECT m.NAME FROM MITARBEITER m
WHERE EXISTS (
SELECT 1 FROM ZUWEISUNG z WHERE z.MID = m.MID
);
-- Mitarbeiter ohne Projekt:
SELECT m.NAME FROM MITARBEITER m
WHERE NOT EXISTS (
SELECT 1 FROM ZUWEISUNG z WHERE z.MID = m.MID
);
Self-JOIN – Tabelle mit sich selbst
-- Mitarbeiter mit ihrem Vorgesetzten:
SELECT m.NAME AS MITARBEITER,
v.NAME AS VORGESETZTER
FROM MITARBEITER m
LEFT JOIN MITARBEITER v ON v.MID = m.VORGESETZTER_MID;
CREATE TABLE + INSERT
CREATE TABLE log (
lid INTEGER PRIMARY KEY,
aktion TEXT,
zeitpunkt TEXT
);
INSERT INTO log VALUES (1, 'Login', '2024-01-01');
INSERT INTO log VALUES (2, 'Query', '2024-01-02');
IN mit Subquery
SELECT NAME FROM MITARBEITER
WHERE MID IN (
SELECT MID FROM ZUWEISUNG WHERE STUNDEN > 20
);
