Version: 5. félév

3. Gyakorlat

Órai feladatok#

SZERET Tábla feladatok#

  1. Kik szeretnek legalább kétféle gyümölcsöt?

    π sz1.nev σ sz1.gyumolcs < sz2.gyumolcs (ρ sz1 (szeret) ⨯ ρ sz2 (szeret))

    select distinct s1.nev from szeret s1, szeret s2 where s1.nev=s2.nev and s1.gyumolcs<s2.gyumolcs;
  2. Kik szeretnek legalább háromféle gyümölcsöt?

    π sz1.nev σ sz1.gyumolcs < sz2.gyumolcs ∧ sz2.gyumolcs < sz3.gyumolcs (ρ sz1 (szeret) ⨯ ρ sz2 (szeret) ⨯ ρ sz3 (szeret))

    select distinct s1.nev from szeret s1, szeret s2, szeret s3
    where s1.nev=s2.nev
    and s1.nev=s3.nev
    and s1.gyumolcs<s2.gyumolcs
    and s2.gyumolcs<s3.gyumolcs;
  3. Kik szeretnek legfeljebb kétféle gyümölcsöt?

    π nev (szeret) - (π sz1.nev σ sz1.gyumolcs < sz2.gyumolcs ∧ sz2.gyumolcs < sz3.gyumolcs (ρ sz1 (szeret) ⨯ ρ sz2 (szeret) ⨯ ρ sz3 (szeret)))

    select nev from szeret minus
    select distinct s1.nev from szeret s1, szeret s2, szeret s3
    where s1.nev=s2.nev
    and s1.nev=s3.nev
    and s1.gyumolcs<s2.gyumolcs
    and s1.gyumolcs<s3.gyumolcs
    and s2.gyumolcs < s3.gyumolcs;
  4. Kik szeretnek pontosan kétféle gyümölcsöt?

    π sz1.nev σ sz1.gyumolcs < sz2.gyumolcs (ρ sz1 (szeret) ⨯ ρ sz2 (szeret))

    π sz1.nev σ sz1.gyumolcs < sz2.gyumolcs ∧ sz2.gyumolcs < sz3.gyumolcs (ρ sz1 (szeret) ⨯ ρ sz2 (szeret) ⨯ ρ sz3 (szeret))

    select distinct s1.nev from szeret s1, szeret s2
    where s1.nev=s2.nev and s1.gyumolcs<s2.gyumolcs
    minus select distinct s1.nev from szeret s1, szeret s2, szeret s3
    where s1.nev=s2.nev and s1.nev=s3.nev and s1.gyumolcs<s2.gyumolcs
    and s1.gyumolcs<s3.gyumolcs and s2.gyumolcs < s3.gyumolcs;

DOLGOZO Tábla feladatok#

  1. Kik azok a dolgozók, akiknek a főnöke KING? (nem leolvasva)

    π d1.dnev σ d1.fonoke=d2.dkod and d2.dnev='KING' (ρ d1 dolgozo ⨯ ρ d2 dolgozo)

    select d1.dnev from dolgozo d1, dolgozo d2
    where d1.fonoke=d2.dkod and d2.dnev='KING';
  2. Adjuk meg azoknak a főnököknek a nevét, akiknek a foglalkozása nem 'MANAGER' (dnev)

    π d1.dnev σ d1.foglalkozas!='MANAGER' and d1.dkod=d2.fonoke (ρ d1 dolgozo ⨯ ρ d2 dolgozo)`

    select distinct d1.dnev from dolgozo d1, dolgozo d2
    where d1.foglalkozas!='MANAGER' and d1.dkod=d2.fonoke;
  3. Adjuk meg azokat a dolgozókat, akik többet keresnek a főnöküknél.

  4. Kik azok a dolgozók, akik főnökének a főnöke KING?

  5. Kik azok a dolgozók, akik osztályának telephelye DALLAS vagy CHICAGO?

    π dolgozo.dnev σ dolgozo.oazon = osztaly.oazon and (osztaly.telephely = 'DALLAS' or osztaly.telephely = 'CHICAGO') (dolgozo ⨯ osztaly )

    select dolgozo.dnev from dolgozo, osztaly
    where dolgozo.oazon = osztaly.oazon
    and (osztaly.telephely = 'DALLAS' or osztaly.telephely = 'CHICAGO');
  6. Kik azok a dolgozók, akik osztályának telephelye nem DALLAS és nem CHICAGO?

    π dnev (dolgozo) - π d.dnev σ d.fizetes > 2000 or (d.oazon = osztaly.oazon and osztaly.onev = 'CHICAGO') ( ρ d dolgozo ⨯ osztaly )

    select dnev from dolgozo -
    (select d.dnev from dolgozo as d, osztaly
    where d.fizetes>2000
    or (d.oazon=osztaly.oazon and osztaly.onev='CHICAGO'))
  7. Adjuk meg azoknak a nevét, akiknek a fizetése > 2000 vagy a CHICAGO-i osztályon dolgoznak.

    π d2.dnev σ d1.fonoke = d2.dkod and d1.fizetes > 2000 ( ρ d1 dolgozo ⨯ ρ d2 dolgozo )

    SELECT d2.dnev
    from dolgozo as d1, dolgozo as d2
    where d1.fonoke=d2.dkod and d1.fizetes>2000
  8. Melyik osztálynak nincs dolgozója?

    π onev (osztaly) - (π onev σ dolgozo.oazon = osztaly.oazon ( osztaly ⨯ dolgozo ))

    select onev from osztaly -
    (select onev from osztaly, dolgozo
    where dolgozo.oazon=osztaly.oazon)
  9. Adjuk meg azokat a dolgozókat, akiknek van 2000-nél nagyobb fizetésű beosztottja.

    π fonok.dnev σ fonok.fonoke = d2.dkod and fonok.fizetes > 2000 ( ρ fonok dolgozo ⨯ ρ d2 dolgozo )

    select beosztott.dnev
    from dolgozo as beosztott, dolgozo as d2
    where beosztott.fonoke=d2.dkod and beosztott.fizetes>2000
  10. Adjuk meg azokat a dolgozókat, akiknek nincs 2000-nél nagyobb fizetésű beosztottja.

    össz - 9.kérdés

  11. Adjuk meg azokat a telephelyeket, ahol van elemző (ANALYST) foglalkozású dolgozó.

    π telephely σ d.foglalkozas = 'ANALYST' ( ρ o osztaly ⨯ ρ d dolgozo )

```sql
select telephely
from osztaly as o, dolgozo as d
where d.foglalkozas='ANALYST'
```
  1. Adjuk meg azokat a telephelyeket, ahol nincs elemző (ANALYST) foglalkozású dolgozó.

    össz - 11. kérdés

  2. Adjuk meg a maximális fizetésű dolgozó(k) nevét.

Gyakorló feladatok (HAJO tábla)#

  1. Adjuk meg azokat a hajóosztályokat a gyártó országok nevével együtt, amelyeknek az ágyúi legalább 16-os kaliberűek.

    π hajoosztalyok.osztaly σ hajoosztalyok.osztaly = hajok.osztaly and hajoosztalyok.kaliber > 16 ( hajoosztalyok ⨯ hajok )

    select DISTINCT hajoosztalyok.osztaly from hajoosztalyok, hajok
    where hajoosztalyok.osztaly = hajok.osztaly and hajoosztalyok.kaliber>16
  2. Melyek azok a hajók, amelyeket 1921 előtt avattak fel?

    π hajonev σ felavatva < 1921 (hajok)

    select distinct hajonev from hajok
    where felavatva<1921
  3. Adjuk meg a Denmark Strait-csatában elsüllyedt hajók nevét.

    select distinct hajok.hajonev from hajok, csatak, kimenetelek
    where kimenetelek.csatanev = csatak.csatanev
    and kimenetelek.hajonev = hajok.hajonev
    and kimenetelek.eredmeny = 'elsullyedt'
  4. Az 1921-es washingtoni egyezmény betiltotta a 35000 tonnánál súlyosabb hajókat. Adjuk meg azokat a hajókat, amelyek megszegték az egyezményt. (1921 után avatták fel őket)

    π hajok.hajonev σ felavatva > 1921 and hajoosztalyok.osztaly = hajok.osztaly and hajoosztalyok.vizkiszoritas > 35000 ( hajok ⨯ hajoosztalyok )

    select distinct hajok.hajonev from hajok, hajoosztalyok
    where felavatva>1921
    and hajoosztalyok.osztaly = hajok.osztaly
    and hajoosztalyok.vizkiszoritas>35000
  5. Adjuk meg a Guadalcanal csatában részt vett hajók nevét, vízkiszorítását és ágyúi­nak a számát.

  6. Adjuk meg az adatbázisban szereplő összes hadihajó nevét. (Ne feledjük, hogy a Hajók relációban nem feltétlenül szerepel az összes hajó!)

Last updated on