1. Abfrage
Anzahl der Neuzugänge pro Jahr
select YEAR_JOINED, count(*) as Amount
from PLAYERS
group by YEAR_JOINED
order by 1;
2. Abfrage
Anzahl und durchschnittliche Höhe der Strafen pro Spieler
select (PLAYERNO), count(*) as Anzahl, round(avg(AMOUNT), 2) as Average
from PENALTIES
group by PLAYERNO;
select NAME from PLAYERS
where PLAYERNO in (
select PLAYERNO
from PENALTIES
group by PLAYERNO);
3. Abfrage
Anzahl der Strafen für die Jahre vor 1983
select TO_CHAR(PEN_DATE, 'yyyy') as Year, count(*) as Amount
from PENALTIES
where TO_CHAR(PEN_DATE, 'yyyy') < 1983
group by TO_CHAR(PEN_DATE, 'yyyy');
4. Abfrage
In welchen Städten leben mehr als 4 Spieler
select TOWN, count(*)
from PLAYERS
group by TOWN
having count(*) > 4;
5. Abfrage
PLAYERNO derjenigen Spieler, deren Strafensumme über 150 liegt
select PLAYERNO, sum(AMOUNT)
from PENALTIES
group by PLAYERNO
having sum(AMOUNT) > 150;
6. Abfrage
NAME und INITIALS derjenigen Spieler, die mehr als eine Strafe erhalten haben
select NAME, INITIALS
from PLAYERS
where PLAYERNO in (
select PLAYERNO
from PENALTIES
group by PLAYERNO
having count(*) > 1);
7. Abfrage
In welchen Jahren gab es genau 2 Strafen
select TO_CHAR(PEN_DATE, 'yyyy'), count(*)
from PENALTIES
group by TO_CHAR(PEN_DATE, 'yyyy')
having count(*) = 2;
8. Abfrage
NAME und INITIALS der Spieler, die 2 oder mehr Strafen über $40 erhalten haben
select NAME, INITIALS
from PLAYERS
where PLAYERNO in(
select PLAYERNO
from PENALTIES
where AMOUNT > 40
group by PLAYERNO
having count(*) >= 2);
select pl.NAME, pl.INITIALS
from PLAYERS pl, PENALTIES pe
where pl.PLAYERNO = pe.PLAYERNO and AMOUNT > 40
group by pl.NAME, pl.INITIALS
having count(*) >= 2
9. Abfrage
NAME und INITIALS des Spielers mit der höchsten Strafensumme
select NAME, INITIALS
from PLAYERS
where PLAYERNO in (
select PLAYERNO
from PENALTIES
group by PLAYERNO
having sum(AMOUNT) = (
select max(sum(AMOUNT))
from PENALTIES group by PLAYERNO));
select NAME, INITIALS
from PLAYERS pl, PENALTIES pe
where pe.PLAYERNO = pl.PLAYERNO
group by pl.name, pl.INITIALS
having sum(AMOUNT) = (
select max(sum(AMOUNT))
from PENALTIES group by PLAYERNO);
10. Abfrage
In welchem Jahr gab es die meisten Strafen und wie viele waren es
select TO_CHAR(PEN_DATE, 'yyyy') as YEAR, count(*) as PENALTIES
from PENALTIES
group by TO_CHAR(PEN_DATE, 'yyyy')
having count(*) = (
select max(count(*))
from PENALTIES
group by TO_CHAR(PEN_DATE, 'yyyy'));
11. Abfrage
PLAYERNO, TEAMNO, WON - LOST sortiert nach letzterem
select PLAYERNO, sum(WON) - sum(LOST)
from MATCHES
group by PLAYERNO;
12. Abfrage
Ausgabe aller Mitarbeiter aus Abteilung 30 geordnet nach ihrem Gehalt beginnend mit dem höchsten Gehalt
select *
from EMP
where DEPTNO = 30
order by SAL desc;
13. Abfrage
Ausgabe aller Mitarbeiter geordnet nach Job und innerhalb des Jobs nach ihrem Gehalt
select *
from EMP
order by JOB, SAL;
14. Abfrage
Ausgabe aller Mitarbeiter geordnet nach ihrem Anstellungsjahr absteigend und innerhalb des Jahres nach ihrem Namen
select *
from EMP
order by HIREDATE desc, ENAME;
15. Abfrage
Ausgabe aller Verkäufer in absteigender Reihenfolge bezüglich dem Verhältnis Provision zu Gehalt
select *
from EMP
order by SAL - nvl(COMM, 0);
16. Abfrage
Ausgabe des Durchschnittsgehalts zu jeder Abteilungsnummer
select DEPTNO, round(avg(SAL), 2) as Durchschnittsgehalt
from EMP
group by DEPTNO;
17. Abfrage
Berechne die durchschnittlichen Jahresgehälter derjenigen Jobs, die von mehr als 2 Mitarbeitern ausgeführt werden
select JOB, round(avg(SAL), 2) as AVGSAL
from EMP
group by JOB
having count(*) > 2;