Advertisement
pabloducato

ORACLE

Jun 28th, 2018
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.96 KB | None | 0 0
  1. ZESTAW 1
  2.  
  3. 1. Wstaw nowy rekord do pracowników, a w nim swoje imię i nazwisko, dzisiejszą datę, a resztę według uznania.
  4.  
  5. INSERT INTO pracownicy
  6. VALUES    (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
  7.  
  8. 2. Pokaż wszystkich pracowników, którzy mają podwładnych
  9.  
  10. SELECT id_pracownika, nazwisko, imie
  11. FROM pracownicy
  12. WHERE id_pracownika IN (
  13.   SELECT id_szefa
  14.   FROM pracownicy
  15.   WHERE id_szefa IS NOT NULL
  16. );
  17.  
  18. 3. Pokaż średnie ceny dla wyrobów, nawet dla tych, które nie mają ceny.
  19.  
  20. SELECT w.opis, avg(c.cena_cennikowa) AS "Srednia cena cennikowa", avg (c.cena_minimalna) AS "średnia cena minimalna"
  21. FROM wyroby w
  22. LEFT JOIN ceny c ON c.id_produktu=w.id_produktu
  23. GROUP BY w.opis
  24. ORDER BY w.opis
  25.  
  26. 4. Podwoić LIMIT kredytowy klientom, którzy w ciągu ostatniego miesiąca dokonali zamówień. (jakoś tak)
  27.  
  28. UPDATE klienci
  29. SET limit_kredytowy = limit_kredytowy*2
  30. WHERE id_klienta IN
  31. (
  32. SELECT id_klienta
  33. FROM zamowienia
  34. WHERE data_zamowienia > '90/10/19'
  35. );
  36.    
  37.  
  38. ZESTAW 2
  39.  
  40. 1. Dodać rekord ze swoimi danymi (imię, nazwisko a reszta dowolna)
  41.  
  42. INSERT INTO pracownicy
  43. VALUES    (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
  44.  
  45. 2. Wyświetlić zamówienia dla klientów nie z bostonu
  46.  
  47. SELECT k.id_klienta, k.miasto, z.id_zamowienia
  48. FROM klienci k
  49.   LEFT JOIN zamowienia z ON k.id_klienta = z.id_klienta
  50. WHERE k.miasto != 'BOSTON';
  51.  
  52.  
  53. 3. Wyświetlić ilość pracowników na poszczególnym etacie (+ te co nie ma żadnego pracownika)
  54.  
  55. SELECT COUNT(p.id_pracownika) AS "ilosc pracownikow" , e.etat
  56. FROM pracownicy p
  57. LEFT JOIN etaty e ON p.id_etatu = e.id_etatu
  58. GROUP BY e.etat
  59.  
  60. 4. Zwiększyć o 10% LIMIT kredytowy klientom, którzy mają MIN. 3 zamówienia
  61.  
  62. UPDATE klienci
  63. SET limit_kredytowy = limit_kredytowy*0.1 + limit_kredytowy
  64. WHERE id_klienta IN
  65. (
  66. SELECT k.id_klienta
  67. FROM klienci k, zamowienia z
  68. WHERE z.id_klienta = k.id_klienta
  69. GROUP BY k.id_klienta
  70. HAVING COUNT(k.id_klienta) >= 3
  71. );
  72.  
  73. ZESTAW 3
  74.  
  75. 1. INSERT
  76.  
  77. INSERT INTO pracownicy
  78. VALUES    (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
  79.  
  80. 2. wskaż wydziały, które posiadają tylko jednego pracownika
  81.  
  82. SELECT w.nazwa, COUNT(p.id_wydzialu) AS "ilosc pracownikow"
  83. FROM pracownicy p, wydzialy w
  84. WHERE p.id_wydzialu=w.id_wydzialu
  85. GROUP BY w.nazwa
  86. HAVING COUNT(p.id_wydzialu) = 1
  87.  
  88.  
  89. 3. wskaż pracowników, który mają największe obroty (? coś takiego)
  90. SELECT p.id_pracownika, p.imie, p.nazwisko, SUM(z.wartosc) AS dupa
  91. FROM pracownicy p
  92. JOIN klienci k ON p.id_pracownika= k.id_pracownika
  93. JOIN zamowienia z ON z.ID_KLIENTA = k.id_klienta
  94. GROUP BY p.id_pracownika, p.imie, p.nazwisko
  95. ORDER BY dupa DESC;
  96.  
  97.  
  98. 4. Podnieść płące pracowników, którzy mają więcej niż 2 klientów (nie pamiętam o ile)
  99.  
  100. UPDATE pracownicy
  101. SET pensja = pensja + 300
  102. WHERE id_pracownika IN
  103. (
  104. SELECT p.id_pracownika
  105. FROM pracownicy p, klienci k
  106. WHERE k.id_pracownika=p.id_pracownika
  107. GROUP BY p.id_pracownika
  108. HAVING COUNT(k.id_pracownika) > 2
  109. );
  110.  
  111.  
  112. ZESTAW 4
  113.  
  114. 1. INSERT
  115.  
  116. INSERT INTO pracownicy
  117. VALUES    (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
  118.  
  119. 2. Wyświetlić MAX i MIN zamówień dla poszczególnych klientow.
  120.  
  121. SELECT k.nazwa, MIN(z.wartosc) AS "MIN", MAX(Z.WARTOSC) AS "MAX"
  122. FROM ZAMOWIENIA Z, KLIENCI K
  123. WHERE k.id_klienta=Z.id_klienta
  124. GROUP BY K.NAZWA
  125.  
  126. 3. Wyświetlić miasto(chyba), nazwę klienta, ilość sprzedaży i średnią sprzedaży, coś w tym stylu
  127.  
  128. SELECT k.miasto, K.NAZWA, COUNT(Z.ID_ZAMOWIENIA), AVG(Z.WARTOSC)
  129. FROM ZAMOWIENIA Z, KLIENCI K
  130. WHERE k.id_klienta=Z.id_klienta
  131. GROUP BY K.MIASTO, K.NAZWA
  132.  
  133.  
  134. 4. Zwiększyć pensje pracowników w dziale "SALES" o 1%, jak dobrze pamiętam
  135.  
  136. UPDATE pracownicy
  137. SET pensja = pensja + pensja*0.01
  138. WHERE id_pracownika IN
  139. (
  140. SELECT p.id_pracownika
  141. FROM pracownicy p, wydzialy w
  142. WHERE p.id_wydzialu = w.id_wydzialu
  143. AND w.nazwa = 'SALES'
  144. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement