Dneska budeme pouzivat databazu Northwind. Pripojite sa k nej pomocou \c northwind v psql konzole.

schema databazy
  1. Vypiste pocet vsetkych objednavok (ORDERS).
  2. Vypiste si prvych 10 zamestnancov.
    riesenie:
    SELECT * FROM employees LIMIT 10;
  3. Pre kazdu krajinu pocet dodavok do tejto krajiny.
  4. Vypiste pre kazdu objednavku jej hodnotu - tj. pocet kusov * cena za kus - (percentualna) zlava (len prvych 10 zaznamov).
    riesenie:
    SELECT unitprice * quantity * (1-discount) AS cena FROM orderdetails LIMIT 10;
  5. Vypiste pre kazdeho dodavatela pocet produktov, ktore dodava.
  6. Vypiste pre kazdu krajinu hodnotu dodavok do tejto krajiny.

    v starej baze: vratite sa pomocou \c

  7. Vypiste pre kazdeho zamestnanca pocet jeho podriadenych. (uz nie bonus ;-))
  8. Vypiste pre kazde oddelenie priemerne premie (priemer len z tych, co maju premie).
    riesenie:
    SELECT dname, COALESCE(AVG(comm),0) FROM dept LEFT OUTER JOIN emp ON dept.deptno = emp.deptno GROUP BY dname;
  9. Vypiste pre kazde oddelenie priemerne platy.

    A vraciame sa spat k Northwind

  10. Vypiste priemernu cenu produktov pre jednotlive kategorie.
  11. Vypiste dodavatelov s najvacsim poctom roznych druhov produktov objednanych v taliansku.
    riesenie:
    SELECT companyname, COUNT(DISTINCT productid) AS "pocet" FROM suppliers NATURAL JOIN products NATURAL JOIN orderdetails NATURAL JOIN orders WHERE shipcountry ILIKE 'italy' GROUP BY companyname ORDER BY "pocet" DESC;
  12. Vypiste dodavatelov s najvacsim poctom produktov objednanych v taliansku.
  13. Vypiste vsetky dodavky, ktore mozu byt splnene so zasobami na sklade.
  14. Najst zakaznika s najvacsou (hodnotou) objednavky.
  15. Najst zamestnanca s najvacsou sumou hodnot "jeho" objednavok.
  16. Najst zamestnancov len s objednavkami do Nemecka.
  17. Najst dodavatelov dodavajucich len napoje.

    Male pripomenutie datalogu

  18. Vypiste vsetky oddelenia (ich nazov), kde pracuju iba manazeri, analytici a uradnici.
  19. Vypiste vsetky dvojice nadriadeny - podriadeny (aj tranzitivne, tj. nielen priamy).
    riesenie:
    Viete take napisat aj v SQL?