Guest User

Untitled

a guest
Jul 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.22 KB | None | 0 0
  1. --1. Vypište jméno a příjmení zaměstnance/zaměstnanců, kteří mají v rámci společnosti nejnižší mzdu.
  2. SELECT MIN(mzda) FROM a_hr.zamestnanci;
  3. SELECT jmeno, prijmeni FROM a_hr.zamestnanci WHERE mzda = (SELECT MIN(mzda) FROM a_hr.zamestnanci);
  4.  
  5. --2. Vypište jméno, příjmení a název pozice. Ve výpise se objeví jen pozice, na kterých pracuje jen jeden zaměstnanec.
  6. SELECT pozice_id, COUNT (pozice_id) pocet FROM a_hr.zamestnanci GROUP BY pozice_id;
  7. SELECT pozice_id, COUNT (pozice_id) pocet FROM a_hr.zamestnanci GROUP BY pozice_id HAVING COUNT(pozice_id)=1;
  8. SELECT pozice_id FROM a_hr.zamestnanci GROUP BY pozice_id HAVING COUNT(pozice_id)=1;
  9. SELECT pozice_id FROM a_hr.zamestnanci GROUP BY pozice_id HAVING COUNT(pozice_id)=1;
  10.  
  11. SELECT jmeno, prijmeni, pozice_nazev FROM a_hr.zamestnanci JOIN a_hr.prac_pozice
  12. USING(pozice_id) WHERE pozice_id IN (SELECT pozice_id FROM a_hr.zamestnanci
  13. GROUP BY pozice_id HAVING COUNT(*)=1);  --final
  14.  
  15. --3. Z tabulky REGIONY vypište všechny regiony. Ke každému regionu připojte informaci o počtu oddělení v daném regionu. Vypište i regiony, které nemají žádná oddělení. Seřaďte dle počtu oddělení sestupně.
  16. SELECT region_id, COUNT(*) pocet FROM a_hr.oddeleni JOIN a_hr.adresy
  17. USING(adresa_id) JOIN a_hr.zeme USING (zeme_id) GROUP BY region_id;
  18.  
  19. SELECT region_nazev, NVL(pocet,0) pocet FROM a_hr.regiony
  20. LEFT JOIN (SELECT region_id, COUNT(*) pocet FROM a_hr.oddeleni JOIN a_hr.adresy
  21. USING(adresa_id) JOIN a_hr.zeme USING(zeme_id) GROUP BY region_id)
  22. USING (region_id) ORDER BY 2 DESC;
  23.  
  24. --4. Vypište název pozice, na kterou jde měsíčně nejvíce prostředků společnosti.
  25. SELECT pozice_id, SUM (mzda) FROM a_hr.zamestnanci GROUP BY pozice_id;
  26.  
  27. SELECT pozice_nazev FROM a_hr.zamestnanci JOIN a_hr.prac_pozice USING (pozice_id)
  28. GROUP BY pozice_nazev HAVING SUM (mzda) = (SELECT MAX(SUM(mzda)) FROM a_hr.zamestnanci
  29. JOIN a_hr.prac_pozice USING (pozice_id) GROUP BY pozice_id);
  30.  
  31. --5. Vypište seznam všech zaměstnanců (jmeno, prijmeni) spolu s informací o rozdílu platu oproti svému nadřízenému. Ředitele celé společnosti vynechejte.
  32. SELECT jmeno, prijmeni, mzda - (SELECT mzda FROM a_hr.zamestnanci nad
  33. WHERE nad.zamestnanec_id = zam.manazer_id) rozdil FROM a_hr.zamestnanci zam
  34. WHERE manazer_id IS NOT NULL ORDER BY rozdil;
  35.  
  36. --6. Zobrazte seznam všech zaměstnanců (prijmeni, mzda). Do tabulky přidejte textovou konstantu „PODPRUMER“, pokud je mzda zaměstnance v rámci společnosti podprůměrná. Pokud je mzda naopak nadprůměrná zobrazí se text „NADPRUMER“.
  37. SELECT prijmeni, mzda, 'nadprumer' FROM a_hr.zamestnanci
  38. WHERE mzda > (SELECT avg(mzda) FROM a_hr.zamestnanci)
  39. UNION SELECT prijmeni, mzda, 'podprumer' FROM a_hr.zamestnanci
  40. WHERE mzda < (SELECT avg(mzda) FROM a_hr.zamestnanci);
  41.  
  42. --7. Vypište názvy zemí, ve kterých má společnost nejméně poboček. Zajímají nás jen země, ve kterých je alespoň jedna pobočka.
  43.  
  44. --8. V rámci celé společnosti nalezněte pozice, které mají nejvyšší a nejnižší průměrnou mzdu. Pozice vypište v rámci jednoho dotazu a ke každému záznamu doplňte textovou konstantu „NEJVYŠŠÍ“ nebo „NEJNIŽŠÍ“, dle výše průměrného platu v rámci společnosti.
Add Comment
Please, Sign In to add comment