Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.38 KB | None | 0 0
  1. 1.Obliczyć dla poszczególnych osób liczbe pełnych lat, jakie każda z nich przepracowała w aktualnym miejescu zatrudnienia.
  2.  
  3. ID_OS       Lata pracy
  4. 2       15
  5. 7       12
  6. 9       12
  7. 15      12
  8. 3       9
  9. 21      9
  10.  
  11.  
  12. SELECT id_os, TRUNC(MONTHS_BETWEEN(SYSDATE,od)/12) LATA_PRACY
  13. FROM zatrudnienia
  14. WHERE do IS NULL
  15. ORDER BY 2 DESC, 1 ASC;
  16.  
  17.  
  18.  
  19. 2.Wyświetlić alfabetyczną listę osób, których pierwsze imię zawiera choć jedną literę 'a'.
  20.  
  21. SELECT id_os, INITCAP(imie1)||' '||INITCAP(nazwisko) pracownik
  22. FROM osoby
  23. WHERE LOWER(imie1) LIKE '%a%'
  24. ORDER BY 2 ASC;
  25.  
  26. 3. Wyświetlić dane takich osób, których nazwisko zaczyna się na literę K lub L i urodziły się w czerwcu,
  27. listopadzie i grudniu lub te kobiety, które mają drugie imię.
  28.  
  29. SELECT id_os, INITCAP(nazwisko)||' '||INITCAP(imie1)osoba, d_ur, plec
  30. FROM osoby
  31. WHERE ((SUBSTR(INITCAP(nazwisko),1,1)='K' OR SUBSTR(INITCAP(nazwisko),1,1)='L')
  32. AND (TO_CHAR(d_ur,'MM')='06' OR TO_CHAR(d_ur,'MM')='11' OR TO_CHAR(d_ur,'MM')='12'))
  33. OR (plec='K' AND imie2 IS NOT NULL);
  34.  
  35. -||-
  36. WHERE(SUBSTR(INITCAP(nazwisko),1,1) IN ('K','L') AND TO_CHAR(d_ur,'MM') IN ('06','11','12'))
  37. OR (plec='K' AND imie2 IS NOT NULL);
  38.  
  39. 4.Wyświetlić liczbę osób zarejestrowanych w bazie.
  40.  
  41. SELECT COUNT(id_os) liczba_osob
  42. FROM osoby;
  43.  
  44.  
  45. 5. Wyświetlić liczbę osób z każdej płci.
  46.  
  47. SELECT COUNT(id_os) liczba_osob
  48. FROM osoby
  49. GROUP BY plec;
  50.  
  51. SELECT plec, COUNT(id_os) liczba_osob
  52. FROM osoby
  53. GROUP BY plec
  54. ORDER BY 2 DESC;
  55.  
  56.  
  57. 6.Dla poszczególnych osób ich aktualne pensje( 2 sposoby )
  58. ID_OS   OSOBA       PENSJA
  59. 2   Duda Barbara    4500
  60. 10  Nowak Adam  4000
  61. 21  Nowak Michał   4000
  62. 15  Pielecki Marek  3800
  63.  
  64. SELECT o.id_os, INITCAP(z.imie1)||' '||INITCAP(o.nazwisko) osoba, z.pensja
  65. FROM osoby o,zatrudnienia z
  66. WHERE o.id_os=z.id_os AND z.do IS NULL
  67. ORDER BY z.pensja DESC, o.imie ASC;
  68.  
  69. FROM osoby o JOIN zatrudnienia ON o.id_os=z.id_os
  70. WHERE z.do IS NULL;
  71.  
  72.  
  73. 7.Wyswietlić  te osoby, które do tej pory nie BYły zatrudnione.
  74.  
  75. SELECT o.id_os, INITCAP(o.imie1)||' '||INITCAP(o.nazwisko) osoba
  76. FROM osoby o LEFT JOIN zatrudnienia z ON o.id_os=z.id_os
  77. WHERE z.do IS NULL;
  78.  
  79.  
  80. 8.Wyświetlić te wydziały, które zatrudniają aktualnie przynajmniej 2 osoby.
  81.  
  82. SELECT INITCAP(w.nazwa) wydzial, COUNT(z.id_os) liczba_osob
  83. FROM wydzialy w JOIN zatrudnienia z ON w.id_w=z.id_w
  84. WHERE z.do IS NULL
  85. GROUP BY INITCAP(w.nazwa)
  86. HAVING COUNT (z.id_os)>1
  87. ORDER BY 2 DESC, 1 ASC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement