1. Vypiste zoznam pozicii, v ktorych pracuju ludia z Chicaga.
  2. Vypiste vsetkych zamestnancov, ktori dostali pridelene premie (aj nulove).
    riesenie:
    SELECT * FROM emp WHERE comm IS NOT NULL;
    odmeny(X):-emp(_,X,_,_,_,_,C,_),\+(C=null).
  3. Vypiste vsetkych sefov, ktori maju svojich priamych podriadenych len v Dalase.
  4. Vypiste pocet vsetkych zamestnancov.
    SELECT COUNT(*) FROM emp;
    poc_zam(C):- subtotal(emp(_, E, _, _, _, _, _, _), [], [count(E,C)]).
  5. Vypiste pocet vsetkych oddeleni.
  6. Vypiste pocet vsetkych (roznych) povolani.
    SELECT COUNT( DISTINCT job) AS "pocet povolani" FROM emp;
    joby(J):- emp(_, _, J, _, _, _, _, _).
    poc_jobov(C):- subtotal(joby(J),[],[count(J,C)]).
  7. Vypiste ich. (len SQL)
    riesenie:
    SELECT DISTINCT job FROM emp;

  8. Vypiste priemerny plat zamestnanca z Dalasu.
    riesenie:
    SELECT AVG(sal) FROM emp e, dept d WHERE e.deptno = d.deptno and d.loc = 'DALLAS';
  9. Vypiste minimalny plat zamestnanca z 3. platovej skupiny.
  10. Vypiste pre kazde cislo oddelenia priemerny plat (a zoradte ich podla priemerneho platu zostupne).
    SELECT deptno, AVG(sal) FROM emp GROUP BY deptno ORDER BY 2 DESC;
    SELECT deptno, AVG(sal) AS "priemerny plat" FROM emp GROUP BY deptno ORDER BY "priemerny plat" DESC;
    odd_avg_plat(DN,A):- dept(DN,_,_),subtotal(emp(_, _, _, _, _, S, _, DN), [DN], [avg(S, A)]).
    % musime viazat premenu, podla ktorej agregujeme. A v datalogu nesortujeme.
  11. Vypiste pre kazde oddelenie pocet zamestnancov.
  12. (Bonus) Vypiste pre kazdeho zamestnanca pocet jeho priamych podriadenych (ti, co nemaju podriadenych, maju 0 podriadenych).
  13. Vypiste ku kazdemu zamestnancovi pocet jeho kolegov (!on si nie je sam kolega).
  14. Vypiste cisla oddeleni s poctom zamestnancom viac ako 3.
    SELECT deptno, COUNT(*) FROM emp GROUP BY deptno HAVING COUNT(*)>3;
    velke_odd(DN):- dept(DN,_,_),subtotal(emp(_, E, _, _, _, _, _, DN), [DN], [count(E,C)]), C>3.
  15. Vypiste kazdeho sefa (tj. cloveka, co ma aspon jedneho podriadeneho) a pocet jeho podriadenych.
  16. Vypiste vsetky oddelenia s mzdovymi nakladmi (suma platov zamestnancov) vacsou ako 4000 s tym, ze sa nebudu ratat manazeri (a ani prezident).