Advertisement
Kroppeek

zadania bazy poprawione

Jun 11th, 2019
593
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 9.03 KB | None | 0 0
  1. 1. Utwórz tabele o nazwie FIRMA zawierającą kolumny: ID_PRACOWNIKA klucz główny typ NUMERIC, IMIE
  2. CHAR(30), NAZWISKO CHAR(60), STANOWISKO CHAR(60), ZAROBEK NUMERIC, DZIAL CHAR(30)
  3.  
  4. CREATE TABLE firma(
  5.     id_pracownika INT PRIMARY KEY,
  6.     imie VARCHAR(30),
  7.     nazwisko VARCHAR(50),
  8.     stanowisko VARCHAR(30),
  9.     zarobek INT,
  10.     dzial VARCHAR(30)
  11. );
  12.  
  13. 2. Wypełnij pierwszy wiersz tabeli nie wstawiając żadnej wartości w pole DZIAL
  14.  
  15. INSERT INTO FIRMA (id_pracownika, imie, nazwisko, stanowisko, zarobek)
  16. VALUES (7369, 'Jan', 'Kowalski', 'Sysadm', 15000);
  17.  
  18. 3. Dodaj do tabeli FRIMA kolumnę MIASTO CHAR(30), gdzie domyślna wartość TO KATOWICE
  19.  
  20. ALTER TABLE firma ADD miasto VARCHAR(30);
  21.  
  22. 4. Wyświetl zawartość tabeli aby zobaczyć rezultat
  23.  
  24. SELECT * FROM firma;
  25.  
  26. 5. Wypełnij wartość w kolumnie DZIAL wstawiając KADRY dla wiersza w którym ID_PRACOWNIKA=7369
  27.  
  28. UPDATE firma SET dzial='kadry' WHERE id_pracownika=7369;
  29.  
  30. 6. Zmień nazwę kolumny MIASTO na LOKALIZACJA
  31.  
  32. ALTER TABLE firma RENAME COLUMN miasto TO lokalizacja;
  33.  
  34. 7. Zmień typ danych w kolumnie ZAROBEK z INTEGER na FLOAT
  35.  
  36. ALTER TABLE firma MODIFY zarobek FLOAT;
  37.  
  38. 8. Usuń kolumny LOKALIZACJA i DZIAL
  39.  
  40. ALTER TABLE firma DROP COLUMN lokalizacja;
  41. ALTER TABLE firma DROP COLUMN dzial;
  42.  
  43. 9. Do tabeli FIRMA wstaw kolumnę NR_DZIALU INTEGER
  44.  
  45. ALTER TABLE firma ADD nr_dzialu INT;
  46.  
  47. 10. Wstaw wartość 20 w kolumnie NR_DZIALU, dla wiersza w którym ID_PRACOWNIKA=7369
  48.  
  49. UPDATE firma SET nr_dzialu=20 WHERE id_pracownika=7369;
  50.  
  51. 11. Utwórz tabelę DZIAL zawierającą kolumny: NR_DZIALU - klucz główny INTEGER, oraz NAZWA_DZIALU
  52. CHAR(50), LOKALIZACJA CHAR(50)
  53.  
  54. CREATE TABLE dzial(
  55.     nr_dzialu INT PRIMARY KEY,
  56.     nazwa_dzialu VARCHAR(50),
  57.     lokalizacja VARCHAR(50)
  58. );
  59.  
  60. 12. Usuń wszystkie wiersze z tabeli FIRMA
  61.  
  62. DELETE FROM firma;
  63.  
  64. 13. Zmień nazwę tabeli FIRMA na PRACOWNICY
  65.  
  66. ALTER TABLE firma RENAME TO pracownicy;
  67.  
  68. 14. Dodaj do tabeli Pracownicy powiązanie z tabelą DZIAL w postaci klucza obcego
  69.  
  70. ALTER TABLE pracownicy ADD FOREIGN KEY (nr_dzialu) REFERENCES dzial(nr_dzialu);
  71.  
  72. 15. Wypełnij tabele DZIAL
  73.  
  74. INSERT INTO dzial VALUES(1, 'Foo', 'Sosnowiec');
  75. INSERT INTO dzial VALUES(2, 'Bar', 'Chorzow');
  76. INSERT INTO dzial VALUES(3, 'Ching', 'Katowice');
  77. INSERT INTO dzial VALUES(4, NULL, 'Katowice');
  78.  
  79. 16. Wyświetl zawartość tabeli DZIAL
  80.  
  81. SELECT * FROM dzial;
  82.  
  83. 17. Wypełnij tabele PRACOWNICY
  84.  
  85. INSERT INTO pracownicy VALUES(1, 'Adam', 'Kowalski', 'Sysadm', 5, 1);
  86. INSERT INTO pracownicy VALUES(2, 'Pawel', 'Pan', 'Dev', 5000, 2);
  87. INSERT INTO pracownicy VALUES(3, 'Krzysztof', 'Muller', 'Dev', 6400, 2);
  88. INSERT INTO pracownicy VALUES(4, 'Ricardo', 'Milos', 'Sysadm', 8400, 1);
  89.  
  90. 18. Wyświetl zawartość tabeli PRACOWNICY
  91.  
  92. SELECT * FROM pracownicy;
  93.  
  94. 19. Zakładając, że urzędnikom odciąga się 25% pensji na podatek dochodowy, oblicz wartość tego podatku
  95. i wyświetl wraz z kolumną ZAROBEK.
  96.  
  97. SELECT zarobek, zarobek * 0.25 AS podatek FROM pracownicy;
  98.  
  99. 20. Wylicz dochody za cały rok pracowników obejmujących stanowisko sprzedawcy. Dane te wyświetl wraz
  100. z ID_Pracownika, Imie, Nazwisko, Stanowisko, Zarobek.
  101.  
  102. SELECT id_pracownika, imie, nazwisko, stanowisko, zarobek, zarobek * 12 AS roczny_zarobek FROM
  103. pracownicy WHERE stanowisko = 'Dev';
  104.  
  105. 21. Wyświetl średnią pensję sprzedawców
  106.  
  107. SELECT avg(zarobek) FROM pracownicy WHERE stanowisko='Sysadm';
  108.  
  109. 22. Do tabeli PRACOWNICY dodaj kolumnę PROWIZJA, która będzie przechowywać wartości tego samego
  110. typu co ZAROBEK.
  111.  
  112. ALTER TABLE pracownicy ADD COLUMN prowizja FLOAT;
  113.  
  114. 23. Dla pracowników obejmujących stanowiska sprzedawców, wypełnij kolumnę Prowizja wartością 300.
  115.  
  116. updatee pracownicy SET prowizja=300 WHERE stanowisko='sprzedawca';
  117.  
  118. 24. Wyświetl roczny dochód sprzedawców (dochód obejmuje także prowizję) . Kolumna zawierająca
  119. wartości dochodu musi mieć nazwę. Wyświetl także kolumny: Imie, Nazwisko, Stanowisko, Zarobek.
  120.  
  121. SELECT imie, nazwisko, stanowisko, zarobek * 12 - podatek AS roczny_dochod;
  122. FROM nazwa_tabeli;
  123.  
  124. 25. Wyświetl pensję sprzedawców (z uwzględnieniem prowizji) jako kolumnę o nazwie
  125. DOCHOD_MIESIACA oraz Imie, Nazwisko, Stanowisko, Pensja.
  126.  
  127. SELECT imie, nazwisko, stanowisko, pensja - prowizja AS dochod_miesiaca FROM nazwa_tabeli WHERE stanowisko='sprzedawca';
  128.  
  129. 26. Wyświetl pracowników, których wartość prowizji jest większa niż 20% pensji.
  130.  
  131. SELECT * FROM  nazwa_tabeli WHERE prowizja > pensja*0.20;
  132.  
  133. 27. Wyświetl dane dotyczące sprzedawców: ID_Pracownika, Imie, Zarobek, Prowizja, różnica między
  134. pensją a wartością prowizji. Uporządkuj wyniki według tej różnicy.
  135.  
  136. SELECT id_pracownika, imie, zarobek, prowizja, zarobek - prowizja AS roznica FROM nazwa_tabeli ORDER BY roznica;
  137.  
  138. 28. Uporządkuj dane z poprzedniego zapytania według Nazwiska, nie używając we właściwym poleceniu
  139. nazwy kolumny.
  140.  
  141. ...
  142.  
  143. 29. Pogrupuj pracowników według numeru działu. Wyświetl te dane wraz z liczebnością grup.
  144.  
  145. SELECT nr_dzialu, COUNT(*) AS liczba_pracownikow FROM pracownicy GROUP BY nr_dzialu;
  146.  
  147. 30. Wyświetl nazwę stanowiska oraz liczbę osób na danym stanowisku
  148.  
  149. SELECT stanowisko AS nazwa_stanowiska, COUNT(*) AS liczba_na_stanowisku FROM pracownicy GROUP BY stanowisko;
  150.  
  151. 31. Ile wynosi średnia pensja w każdym dziale. Wyniki uporządkuj według numer działu.
  152.  
  153.  
  154.  
  155. 32. Wyświetl stanowiska występujące w dziale numer 30 oraz liczę pracowników obejmujących te
  156. stanowiska. (Pogrupuj pracowników, którzy pracują w dziale numer 30, według numeru działu i
  157. stanowiska. Wyświetl te dane wraz z liczebnością grup.)
  158.  
  159. SELECT stanowisko, COUNT(*) AS liczba_pracownikow FROM pracownicy GROUP BY stanowisko, nr_dzialu HAVING nr_dzialu=2;
  160.  
  161. 33. Wyświetl wszystkie stanowiska z wyjątkiem kierownika. Określ ile osób pracuje na danym stanowisku i
  162. jak jest średnia pensja na danym stanowisku
  163.  
  164.  
  165.  
  166. 34. Wyświetl ile osób zajmuje poszczególne stanowiska, z wyjątkiem stanowiska prezesa. W poleceniu
  167. SELECT zastosuje kolejność kolumn: ‘średnia pensja=, średnia pensja, liczba pracowników na
  168. stanowisku, ‘pracownik(ów) na stanowisku’, stanowisko
  169.  
  170. SELECT stanowisko, COUNT(*) AS liczba_pracownikow, avg(zarobek) AS srednia_pensja FROM pracownicy GROUP b
  171. y stanowisko HAVING stanowisko <> 'Sysadm';
  172.  
  173. 35. Pokaż na dwa sposoby instrukcję wyświetlającą pracowników pracujących w dziale 10 lub w dziale 30
  174.  
  175. SELECT * FROM pracownicy WHERE nr_dzialu = 1 OR nr_dzialu = 3;
  176. SELECT * FROM pracownicy WHERE nr_dzialu BETWEEN 3 AND 3 OR nr_dzialu BETWEEN 1 AND 1;
  177.  
  178. 36. Wyświetl pracowników, których pensje są równe prowizji
  179.  
  180. SELECT * FROM pracownicy WHERE zarobek = prowizja;
  181.  
  182. 37. Pokaż na dwa sposoby instrukcję wyświetlającą pracowników, których imiona TO Marcin lub Wojtek lub
  183. Adam. Wiersze uporządkuj według imienia, nie wykorzystując nazwy tej kolumny
  184.  
  185. SELECT * FROM pracownicy WHERE imie = 'Marcin' OR imie = 'Wojtek' OR imie = 'Adam';
  186. SELECT * FROM pracownicy WHERE imie IN ('Marcin', 'Wojtek', 'Adam');
  187.  
  188. 38. Pokaż na dwa sposoby instrukcję wyświetlającą pracowników, których pensja jest w przedziale od 2000
  189. do 3000
  190.  
  191. SELECT * FROM pracownicy WHERE zarobek BETWEEN 3000 AND 5000;
  192. SELECT * FROM pracownicy WHERE zarobek >= 3000 AND zarobek <= 5000;
  193.  
  194. 39. Pokaż na dwa sposoby instrukcję wyświetlającą pracowników, którzy pracują w dziale 30 lub 10 i
  195. których nazwisko kończy się na ”er”
  196.  
  197. SELECT * FROM pracownicy WHERE nr_dzialu BETWEEN 1 AND 3 AND nazwisko LIKE "%er";
  198. SELECT * FROM pracownicy WHERE nr_dzialu = 1 OR nr_dzialu = 3 AND nazwisko LIKE "%er";
  199.  
  200. 40. Wyświetl pracowników, których ID zaczyna się od 77
  201.  
  202. SELECT * FROM pracownicy WHERE id_pracownika LIKE '77%';
  203.  
  204. 41. Wypisz nazwy działów, w których pracują urzędnicy
  205.  
  206. SELECT nazwa_dzialu FROM dzial WHERE stanowisko='urzednik';
  207.  
  208. 42. Wypisz listę pracowników dołączając informacje o ich działach. Wyniki posortuj wg numeru działu.
  209.  
  210. SELECT imie, nazwisko, pracownicy.nr_dzialu, dzial.nazwa_dzialu FROM pracownicy JOIN dzial ON
  211.    -> pracownicy.nr_dzialu = dzial.nr_dzialu
  212.    -> ORDER BY pracownicy.nr_dzialu;
  213.  
  214. 43. Wypisz nazwy wszystkich działów oraz nazwiska ich kierowników
  215.  
  216. SELECT nazwisko, dzial.nazwa_dzialu FROM pracownicy JOIN dzial
  217.    -> ON pracownicy.nr_dzialu = dzial.nr_dzialu
  218.    -> GROUP BY pracownicy.nr_dzialu, stanowisko
  219.    -> HAVING stanowisko = 'Sysadm';
  220.  
  221. 44. Którzy pracownicy zarabiają mniej niż wynosi średnia pensja?
  222.  
  223. SELECT imie, nazwisko FROM pracownicy WHERE zarobek > (SELECT avg(zarobek) FROM pracownicy);
  224.  
  225. 45. Wskaż pracowników, którzy pracują w Warszawie
  226.  
  227. SELECT imie, nazwisko FROM pracownicy WHERE nr_dzialu = (SELECT nr_dzialu FROM dzial WHERE lokalizacja = 'Warszawa');
  228.  
  229. 46. Podaj nazwiska pracowników zarabiających więcej niż wynosi średnia pensja
  230.  
  231. SELECT nazwisko FROM pracownicy WHERE zarobek > (SELECT avg(zarobek) FROM pracownicy);
  232.  
  233. 47. Podaj SUMę pensji wszystkich pracowników pracujących w Katowicach
  234.  
  235. SELECT SUM(zarobek) FROM pracownicy WHERE nr_dzialu = any (SELECT nr_dzialu FROM dzial WHERE lokalizacja = 'Katowice');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement