Joins
Group By
Unterabfragen
Tabellen erstellen
Werte einfügen
100

Lassen Sie sich zu jedem Mitarbeitenden den Namen der entsprechenden Abteilung anzeigen.

SELECT ename, dname FROM emp JOIN dept ON emp.deptno = dept.deptno;

100

Lassen Sie sich die Anzahl der Mitarbeitenden in jeder Abteilung anzeigen.

SELECT deptno, COUNT(*) FROM emp GROUP BY deptno;

100

Lassen Sie sich den Namen des Mitarbeitenden anzeigen, der am meisten verdient.

SELECT ename FROM emp WHERE sal = (SELECT MAX(sal) FROM emp);

100
Erstellen Sie eine vollständige Kopie der Tabelle emp mit dem Namen emp1.

CREATE TABLE emp1 AS SELECT * FROM emp;

100

Fügen Sie an die Tabelle emp_copy alle Werte der Tabelle emp an.

INSERT INTO emp_copy SELECT * FROM emp;
200

Lassen Sie sich zu jedem Mitarbeiter die Gehaltsgruppe anzeigen.

SELECT ename, grade FROM emp JOIN salgrade ON sal BETWEEN losal AND hisal;

200

Lassen Sie sich das durchschnittliche Gehalt der Mitarbeitenden, gruppiert nach dem Beruf, ohne die Salesman, anzeigen.

SELECT job, AVG(sal) FROM emp WHERE job<>'SALESMANN' GROUP BY job;

200

Lassen Sie sich die Namen aller Mitarbeitenden anzeigen, die King als vorgesetzen haben.

SELECT ename FROM emp WHERE mrg = (SELECT deptno FROM emp WHERE ename = 'KING');

200

Erstellen Sie eine Tabelle Mit_Bonus, in der die Namen aller Mitarbeitenden, sowie deren Gehalt unter berücksichtung des Bonus, gespeichert werden.

CREATE TABLE Mit_Bonus AS SELECT ename, sal+NVL(comm,0) FROM emp;

200

Fügen Sie alle Informationen der Mitarbeitenden aus Abteilung 10 an die Tabelle emp_copy an.

INSERT INTO emp_copy SELECT * FROM emp WHERE deptno = 10;

300

Lassen Sie sich für jeden Mitarbeitenden, der mehr als 2400$ verdient den Namen der Abteilung anzeigen.

SELECT ename, dname FROM emp JOIN dept on emp.deptno = dept.deptno WHERE sal > 2400;

300

Lassen Sie sich das höchste Gehalt eines Clercs in jeder Abteilung anzeigen.

SELECT deptno, MAX(sal) FROM emp WHERE job = 'CLERK' GROUP BY deptno;

300

Lassen Sie sich die Namen aller Mitarbeitenden anzeigen, die in einer Abteilung arbeiten, in der jemand mit dem Beruf Manager arbeitet.

SELECT ename FROM emp WHERE deptno IN (SELECT deptno FROM emp WHERE job = 'MANAGER');

300

Erstellen Sie eine Tabelle Top_Manager, die alle Informationen der Mitarbeitenden mit dem Job Manager beinhaltet, die mehr als 1500$ verdienen.

CREATE TABLE Top_Manager AS SELECT * FROM emp WHERE job = 'MANAGER' AND sal > 1500;

300

Fügen Sie alle Mitarbeitenden, die weniger als 1600$ verdienen und nicht in Abteilung 10 arbeiten an die Tabelle emp1 an.

INSERT INTO emp1 SELECT * FROM emp WHERE sal < 1600 AND deptno <> 10;

400

Lassen Sie sich zu jedem Mitarbeitenden den Namen des Vorgesetzten anzeigen.

SELECT e1.ename, e2.ename FROM emp e1 JOIN emp e2 ON e1.empno = e2.mgr;

400

Lassen Sie sie alle Abteilungen anzeigen, in denen die Mitarbeitenden durchschinttlich mindestens 1300$ verdienen.

SELECT deptno FROM emp GROUP BY deptno HAVING AVG(sal)>=1300;

400

Lassen Sie sich alle Mitarbeiten anzeigen, die in den gleichen Job haben, wie einer der Mitarbeitenden, die mehr verdienen als alle Mitarbeitenden der Abteilung 10. 

SELECT ename FROM emp WHERE job = (SELECT job FROM emp WHERE sal >ALL (SELECT sal FROM emp WHERE deptno = 10));

400

Erstellen Sie eine Tabelle Mit_Abteilungsname, die alle Informationen der Tabellen emp und dept sinnvoll verbindet.

SELECT emp.*, dept.* FROM emp JOIN dept ON emp.deptno = dept.deptno;

400

Fügen Sie an die Tabelle emp_copy den Namen und die Abteilung aller Mitarbeitenden an, die mehr verdienen als ein Mitarbeiter mit dem Beruf Clerk.

INSERT INTO emp_copy SELECT ename, deptno FROM emp WHERE sal >ANY (SELECT sal FROM emp WHERE job = 'CLERK');

500

Lassen Sie sich den Namen aller Mitarbeitenden anzeigen, die unter berücksichtigung des Bonus in der Gehaltsstufe 3 sind.

SELECT ename FROM emp JOIN salgrade ON sal+NVL(comm,0) BETWEEN losal AND hisal WHERE grade =3;

500

Lassen Sie sich die Summe der Geälter der Mitarbeitenden jeden Jobs anzeigen, in denen der bestbezahlteste Mitarbeiter mindesten 1100$ verdient, ohne die Mitarbeitenden King und Scott zu berücksichtigen.

SELECT deptno, SUM(sal) FROM emp WHERE ename NOT IN ('KING', 'SCOTT') GROUP BY job HAVING MAX(sal)>=1100;

500

Lassen Sie sich alle Mitarbeitenden anzeigen, die mehr verdienen als irgendein Mitarbeitender aus der Abteilung 30, aber mehr als alle Mitarbeitenden mit dem Job Salsman.

SELECT ename FROM emp WHERE sal >ANY (SELECT sal FROM emp WHERE deptno = 30) AND sal >ALL (SELECT sal FROM emp WHERE job = 'SALESMAN');

500

Erstellen Sie eine Tabelle Durchschnitte, die das durchschnittliche Gehalt der Mitarbeitenden pro Gehaltsgruppe beinhaltet, wobei nur die Mitarbeitenden berücksichtigt werden, die in der gleichen Abteilung sind wie Scott.

CREATE TABLE Durchschnitte AS SELECT grade, AVG(sal) FROM emp join salgrade ON sal BETWEEN losal AND hisal WHERE deptno = (SELECT deptno FROM emp WHERE ename = 'SCOTT') GROUP BY grade;

500

Fügen Sie in die Tabelle Mit_Abteilungen den Namen der Mitarbeitenden, sowie den Namen der entsprechenden Abteilung ein, für alle Mitarbeitenden, die weniger verdienen als alle Mitaribeitenden, die in einer Abteilung sind, die im Durchschnitt mehr als 1000$ verdient.

INSERT INTO Mit_Abteilungen SELECT ename, dname FROM emp JOIN dept ON emp.deptno = dept.deptno WHERE sal <ALL (SELECT sal FROM emp WHERE deptno IN (SELECT deptno FROM emp GROUP BY deptno HAVING AVG(sal)>1000));

M
e
n
u