Zopakujeme si SQL.

  1. Vypiste vsetkych zamestnancov prijatych neskor ako 20.2.1982.
    riesenie:
    select * from emp where hiredate > '1982-02-20';
  2. Napiste pre kazde meno oddelenia, kedy nastupil najdlhsie pracujuci zamestnanec (z tych, ktory teraz tam pracuju). Pozor: odpoved musi obsahovat 4 riadky!
  3. Napiste vsetky oddelenia (ich mena), kde pracuju len zamestanci s nastupom najneskor 20.2.1982. Zlozite, ale mali by ste uz vsetci zvladnut! Odpoved ma 3 riadky a RESEARCH tam nieje.
    riesenie:
    SELECT DISTINCT dname FROM emp e RIGHT OUTER JOIN dept ON e.deptno = dept.deptno WHERE NOT EXISTS (SELECT * FROM emp WHERE hiredate> '1982-02-20' AND e.deptno = deptno);
  4. Vypiste najskor prijateho zamestnanca. Kazdy si vyskusajte (aj) tento.
    riesenie:
    Pouzite vnoreny SELECT. I ti, co to spravili nahodou inak, nech si to vyskusaju pomocou vnoreneho selectu.
    riesenie:
    SELECT * FROM emp WHERE hiredate = (SELECT MIN(hiredate) FROM emp);
  5. (mini bonus) Vypiste najskor prijateho zamestnanca pre kazde oddelenie.

    Nasledujuce priklady uz robte aj v SQL aj v Datalogu.

    Vsimnite si format datumov v datalogu....
  6. Vypiste meno zamestnanca, meno oddelenia a lokalitu tych zamestnancov, ktori dostavaju premie.
  7. Vypiste vsetkych, ktori boli prijati skor ako ich sefovia.
  8. Vypiste pre kazde oddelenie jeho manazera (alebo 'nikto' ak nema)
    riesenie:
    odd_sef(D,M):-dept(N,D,_),emp(_, M, manager, _, _, _, _, N). odd_sef(D,M):-dept(N,D,_),\+emp(_, _, manager, _, _, _, _, N),M=nikto.

    A teraz uz len datalog

    Teraz myslim pod nadriadenym i nepriamo nadriadeneho, pod sefom len priameho nadriadeneho
  9. Vypiste vsetky dvojice nadriadeny - podriadeny.
  10. Vypiste mena zamestnancov, ktori maju najviac jedneho nadriadeneho.
  11. Vypiste mena zamestnancov, ktori su v podnikovej hierarchii "rovnako vysoko" (t.j. maju rovnaku "vzdialenost od korena stromu") ako zamestnanec SMITH.
  12. Vypiste mena zamestnancov, ktori niesu podriadeni CLARKovi.
  13. (bonus) Vypiste najskor prijateho zamestnanca
  14. (bonus) Vypiste pre kazdeho zamestnanca ako "vysoko" je v podnikovej hierarchii (definujme to ako "vzdialenost od korena", ti viac hardcore, ako maximalnu vzdialenost od listu).

    Cas na otazky a odpovede ;-)