Kihagyás

3. gyakorlat

Gyakorló gyakorlat!!!!

két új tábla:

CREATE TABLE dolgozo AS SELECT * FROM nikovits.dolgozo;
CREATE TABLE osztaly AS SELECT * FROM nikovits.osztaly; 

1. feladat

Azok a dolgozó, akik a 10-es és a 20-as osztályon dolgoznak

SELECT *
FROM dolgozo
WHERE oazon = 10 OR oazon = 20;

2. feladat

Kik azok a dolgozók, akiknek a jutaléka nem nagyobb, mint 600 (krumpli???)

SELECT *
FROM dolgozo
WHERE jutalek <= 600 OR jutalek IS NULL;
SELECT *
FROM dolgozo
MINUS
SELECT *
FROM dolgozo
WHERE jutalek > 600;

3. feladat

Adjuk meg azoknak a dolgozóknak a nevét és fizetésük kétszeresét, akik a 10-es osztályon dolgoznak

SELECT dnev, fizetes*2 fiz2
FROM dolgozo
WHERE osztaly = 10;

4. feladat

Kik azok, akik legalább két féle gyümölcsöt szeretnek?

SELECT DISTINCT sz1.nev
FROM szeret sz1, szeret sz2
WHERE sz1.nev = sz2.nev AND sz1.gyumolcs <> sz2.gyumolcs;

5. feladat

Kik azok, akik legalább háromféle gyümölcsöt szeretnek

SELECT DISTINCT sz1.nev
FROM szeret sz1, szeret sz2, szeret sz3
WHERE sz1.nev = sz2.nev
AND sz2.nev = sz3.nev
AND sz2.gyumolcs <> sz1.gyumolcs
AND sz3.gyumolcs <> sz1.gyumolcs
AND sz2.gyumolcs <> sz3.gyumolcs;

6. feladat

Kik szeretnek legfejlebb kétféle gyümölcsöt

SELECT DISTINCT nev FROM szeret
MINUS
SELECT DISTINCT sz1.nev
FROM szeret sz1, szeret sz2, szeret sz3
WHERE sz1.nev = sz2.nev
AND sz2.nev = sz3.nev
AND sz2.gyumolcs <> sz1.gyumolcs
AND sz3.gyumolcs <> sz1.gyumolcs
AND sz2.gyumolcs <> sz3.gyumolcs;

7. feladat

Kik azok a dolgozók, akiknek a főnöke KING?

SELECT d.*
FROM dolgozo d, dolgozo fonok
WHERE d.fonoke=fonok.dkod
 AND fonok.dnev='KING';
SELECT *
FROM dolgozo
WHERE fonoke IN (SELECT dkod FROM dolgozo WHERE dnev = 'KING');

8. feladat

Kik azok a dolgozók, akik többet keresnek a főnöküknél?

SELECT d.*
FROM dolgozo d, dolgozo fonok
WHERE d.fonoke=fonok.dkod
 AND d.fizetes > fonok.fizetes;

9. feladat

Kik azok a dolgozók, akiknek a főnökének a főnöke a "KING"?

SELECT d.dnev
FROM dolgozo d, dolgozo f1, dolgozo f2
WHERE d.fonoke = f1.dkod AND f1.fonoke=f2.dkod
 AND f2.dnev = 'KING';

Natural join

SELECT *
FROM dolgozo d, osztaly o
WHERE d.oazon = o.oazon;
-- Ezek megegyeznek
SELECT *
FROM dolgozo NATURAL JOIN osztaly;

10. feladat

Kik azok a dolgozók, akiknek a telephelye Dallas vagy Chicago

SELECT dnev
FROM dolgozo
NATURAL JOIN osztaly
WHERE osztaly.telephely='DALLAS' OR osztaly.telephely='CHICAGO';

11. feladat

Adjuk meg azokat a dolgozókat, akiknek van 2000-nél nagyobb fizetésű beosztottja

SELECT DISTINCT d.dnev
FROM dolgozo d, dolgozo beosztott
WHERE beosztott.fonoke=d.dkod
 AND beosztott.fizetes > 2000;