Advertisement
Guest User

Untitled

a guest
Jul 11th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Oracle 8 13.78 KB | None | 0 0
  1. INSERT INTO pracownicy VALUES(2307,'Balwierczak','Pawel','Q',667,7902,SYSDATE,800,NULL,20);
  2. #####
  3. INSERT INTO pracownicy VALUES(2307,'Balwierczak','Pawel','Q',667,7902,TO_DATE('18/07/12', 'YY/MM/DD'),800,NULL,20);
  4. ##################
  5. DODATKOWE
  6. zad.1
  7. UPDATE artykul SET cena=cena-10
  8. WHERE nazwa LIKE '%parasol%';
  9. zad.2
  10. SELECT a.nazwa, NVL(SUM(p.ilosc),0)
  11. FROM pozycja p
  12. right join artykul a ON p.id_artykulu=a.id_artykulu
  13. GROUP BY a.nazwa;
  14. zad.3
  15. UPDATE klienci k
  16. SET k.limit_kredytowy = k.limit_kredytowy +10*(SELECT COUNT(z.id_zamowienia) FROM zamowienia z
  17. join klienci k1 ON z.id_klienta = k1.id_klienta
  18. WHERE k1.id_klienta = k.id_klienta);
  19. zad.4 (wyświetlić pracowników bez podwładnych)
  20. SELECT * FROM pracownicy p
  21. WHERE p.id_pracownika NOT IN (
  22. SELECT p.id_szefa FROM pracownicy p);
  23. zad.5(nazwa wyrobu, cene i dochod laczny w poprzednim roku)
  24. SELECT wyroby.id_produktu, wyroby.opis, AVG(ceny.cena_cennikowa), SUM(wiersze_zamowien.wartosc) FROM zamowienia
  25. JOIN wiersze_zamowien ON zamowienia.id_zamowienia = wiersze_zamowien.id_zamowienia AND TO_CHAR(zamowienia.data_zamowienia, 'YYYY') = TO_CHAR(ADD_MONTHS('1991-01-01', -12), 'YYYY')
  26. RIGHT JOIN wyroby ON wyroby.id_produktu = wiersze_zamowien.id_produktu
  27. JOIN ceny ON ceny.id_produktu = wyroby.id_produktu
  28. GROUP BY wyroby.id_produktu, wyroby.opis;
  29. zad.5
  30. UPDATE pracownicy
  31. SET pensja = pensja*0.95
  32. WHERE id_pracownika IN
  33. (SELECT p.id_pracownika FROM pracownicy p
  34. join klienci k ON p.id_pracownika = k.id_pracownika
  35. join zamowienia z ON z.id_klienta = k.id_klienta
  36. WHERE EXTRACT(MONTH FROM z.data_zamowienia) = EXTRACT(MONTH FROM ADD_MONTHS(SYSDATE,-1))
  37. AND EXTRACT(YEAR FROM z.data_zamowienia) = EXTRACT(YEAR FROM ADD_MONTHS(SYSDATE,-1))
  38. GROUP BY p.id_pracownika HAVING SUM(z.wartosc) < 500);
  39. ####################
  40. STARE
  41. ZESTAW 1
  42. 1. Wstaw nowy rekord DO pracowników, a w nim swoje imię i nazwisko, dzisiejszą datę, a resztę według uznania.
  43. INSERT INTO pracownicy
  44. VALUES    (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
  45. 2. Pokaż wszystkich pracowników, którzy mają podwładnych
  46. SELECT id_pracownika, nazwisko, imie
  47. FROM pracownicy
  48. WHERE id_pracownika IN (
  49.   SELECT id_szefa
  50.   FROM pracownicy
  51.   WHERE id_szefa IS NOT NULL
  52. );
  53. 3. Pokaż średnie ceny dla wyrobów, nawet dla tych, które nie mają ceny.
  54. SELECT w.opis, AVG(c.cena_cennikowa) AS "Srednia cena cennikowa", AVG (c.cena_minimalna) AS "średnia cena minimalna"
  55. FROM wyroby w
  56. left join ceny c ON c.id_produktu=w.id_produktu
  57. GROUP BY w.opis
  58. ORDER BY w.opis
  59. 4. Podwoić limit kredytowy klientom, którzy w ciągu ostatniego miesiąca dokonali zamówień. (jakoś tak)
  60. UPDATE klienci
  61. SET limit_kredytowy = limit_kredytowy*2
  62. WHERE id_klienta IN
  63. (
  64. SELECT id_klienta
  65. FROM zamowienia
  66. WHERE data_zamowienia > '90/10/19'
  67. );
  68. ZESTAW 2
  69. 1. Dodać rekord ze swoimi danymi (imię, nazwisko a reszta dowolna)
  70. INSERT INTO pracownicy
  71. VALUES    (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
  72. 2. Wyświetlić zamówienia dla klientów nie z bostonu
  73. SELECT k.id_klienta, k.miasto, z.id_zamowienia
  74. FROM klienci k
  75.   LEFT JOIN zamowienia z ON k.id_klienta = z.id_klienta
  76. WHERE k.miasto != 'BOSTON';
  77. 3. Wyświetlić ilość pracowników na poszczególnym etacie (+ te co nie ma żadnego pracownika)
  78.  
  79. SELECT COUNT(p.id_pracownika) AS "ilosc pracownikow" , e.etat
  80. FROM pracownicy p
  81. left join etaty e ON p.id_etatu = e.id_etatu
  82. GROUP BY e.etat
  83.  
  84. 4. Zwiększyć o 10% limit kredytowy klientom, którzy mają MIN. 3 zamówienia
  85.  
  86. UPDATE klienci
  87. SET limit_kredytowy = limit_kredytowy*0.1 + limit_kredytowy
  88. WHERE id_klienta IN
  89. (
  90. SELECT k.id_klienta
  91. FROM klienci k, zamowienia z
  92. WHERE z.id_klienta = k.id_klienta
  93. GROUP BY k.id_klienta
  94. HAVING COUNT(k.id_klienta) >= 3
  95. );
  96.  
  97. ZESTAW 3
  98.  
  99. 1. INSERT
  100.  
  101. INSERT INTO pracownicy
  102. VALUES    (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
  103.  
  104. 2. wskaż wydziały, które posiadają tylko jednego pracownika
  105.  
  106. SELECT w.nazwa, COUNT(p.id_wydzialu) AS "ilosc pracownikow"
  107. FROM pracownicy p, wydzialy w
  108. WHERE p.id_wydzialu=w.id_wydzialu
  109. GROUP BY w.nazwa
  110. HAVING COUNT(p.id_wydzialu) = 1
  111.  
  112.  
  113. 3. wskaż pracowników, który mają największe obroty (? coś takiego)
  114. SELECT p.id_pracownika, p.imie, p.nazwisko, SUM(z.wartosc) AS wartosc
  115. FROM pracownicy p
  116. join klienci k ON p.id_pracownika= k.id_pracownika
  117. join zamowienia z ON z.ID_KLIENTA = k.id_klienta
  118. GROUP BY p.id_pracownika, p.imie, p.nazwisko
  119. ORDER BY dupa DESC;
  120.  
  121.  
  122. 4. Podnieść płące pracowników, którzy mają więcej niż 2 klientów (nie pamiętam o ile)
  123.  
  124. UPDATE pracownicy
  125. SET pensja = pensja + 300
  126. WHERE id_pracownika IN
  127. (
  128. SELECT p.id_pracownika
  129. FROM pracownicy p, klienci k
  130. WHERE k.id_pracownika=p.id_pracownika
  131. GROUP BY p.id_pracownika
  132. HAVING COUNT(k.id_pracownika) > 2
  133. );
  134.  
  135.  
  136. ZESTAW 4
  137.  
  138. 1. INSERT
  139.  
  140. INSERT INTO pracownicy
  141. VALUES    (1234,'NAZWISKO','IMIE','Q',667,7902,TO_DATE('2016/07/05', 'YYYY/MM/DD'),800,NULL,20);
  142.  
  143. 2. Wyświetlić MAX i MIN zamówień dla poszczególnych klientow.
  144.  
  145. SELECT k.nazwa, MIN(z.wartosc) AS "MIN", MAX(Z.WARTOSC) AS "MAX"
  146. FROM ZAMOWIENIA Z, KLIENCI K
  147. WHERE k.id_klienta=Z.id_klienta
  148. GROUP BY K.NAZWA
  149.  
  150. 3. Wyświetlić miasto(chyba), nazwę klienta, ilość sprzedaży i średnią sprzedaży, coś w tym stylu
  151.  
  152. SELECT k.miasto, K.NAZWA, COUNT(Z.ID_ZAMOWIENIA), AVG(Z.WARTOSC)
  153. FROM ZAMOWIENIA Z, KLIENCI K
  154. WHERE k.id_klienta=Z.id_klienta
  155. GROUP BY K.MIASTO, K.NAZWA
  156.  
  157.  
  158. 4. Zwiększyć pensje pracowników w dziale "SALES" o 1%, jak dobrze pamiętam
  159.  
  160. UPDATE pracownicy
  161. SET pensja = pensja + pensja*0.01
  162. WHERE id_pracownika IN
  163. (
  164. SELECT p.id_pracownika
  165. FROM pracownicy p, wydzialy w
  166. WHERE p.id_wydzialu = w.id_wydzialu
  167. AND w.nazwa = 'SALES'
  168. );
  169.  
  170. ########################
  171. NOWE
  172.  
  173. --grupa A
  174. INSERT INTO pracownicy VALUES(40,'JANICKI','KRZYSZTOF','A',667,7902,SYSDATE,2000,200,20);
  175.  
  176. SELECT s.id_siedziby,s.region,COUNT(w.id_wydzialu) FROM siedziby s
  177. join wydzialy w ON s.id_siedziby = w.id_siedziby
  178. GROUP BY s.id_siedziby,s.region  HAVING COUNT (w.id_wydzialu)<=1;
  179.  
  180. SELECT w.id_produktu,w.opis,c.cena_cennikowa,SUM(wz.wartosc) FROM wyroby w
  181. left join ceny c ON w.id_produktu = c.id_produktu
  182. left join wiersze_zamowien wz ON w.id_produktu = wz.id_produktu
  183. left join zamowienia z ON wz.ID_ZAMOWIENIA = z.id_zamowienia
  184. GROUP BY w.id_produktu,w.opis,c.cena_cennikowa;
  185.  
  186. UPDATE pracownicy
  187. SET pensja = pensja*0.95
  188. WHERE id_pracownika IN (
  189. SELECT p.id_pracownika FROM pracownicy p
  190. join klienci k ON p.id_pracownika = k.id_pracownika
  191. join zamowienia z ON k.id_klienta = z.ID_KLIENTA
  192. WHERE z.data_zamowienia <TO_DATE('1990/02/01','YY/MM/DD')
  193. AND z.data_zamowienia >TO_DATE('1990/01/01','YY/MM/DD')
  194. GROUP BY p.id_pracownika HAVING SUM(z.wartosc) < 500);
  195.  
  196. --grupa B
  197. INSERT INTO pracownicy VALUES (41,'JANICKI','KRZYSZTOF','A',667,7902,SYSDATE,2000,200,20);
  198.  
  199. SELECT z.id_zamowienia,z.data_zamowienia,z.id_klienta FROM zamowienia z
  200. join wiersze_zamowien wz ON z.id_zamowienia = wz.id_zamowienia
  201. GROUP BY z.id_zamowienia,z.data_zamowienia,z.id_klienta HAVING COUNT(wz.id_zamowienia) = 1;
  202.  
  203. SELECT * FROM (SELECT w.id_produktu,w.opis FROM wyroby w
  204. join wiersze_zamowien wz ON w.id_produktu = wz.id_produktu
  205. GROUP BY w.id_produktu,w.opis
  206. ORDER BY COUNT(wz.id_produktu) DESC)
  207. WHERE ROWNUM <=3;
  208.  
  209. UPDATE pracownicy
  210. SET prowizja = prowizja *1.02
  211. WHERE
  212. id_pracownika IN (SELECT p.id_pracownika FROM pracownicy p
  213. join etaty e ON p.id_etatu = e.id_etatu
  214. WHERE e.etat ='SALESPERSON')
  215. AND
  216. id_pracownika IN (SELECT p.id_szefa FROM pracownicy p);
  217.  
  218. --grupa C
  219. INSERT INTO pracownicy VALUES (42,'JANICKI','KRZYSZTOF','A',667,7902,SYSDATE,2000,200,20);
  220.  
  221. SELECT p.id_pracownika FROM pracownicy p
  222. MINUS
  223. SELECT p1.id_szefa FROM pracownicy p1;
  224. --mysle ze to wyzej wystarczy ale mozna to rozbudowac do postaci
  225. SELECT * FROM pracownicy
  226. WHERE id_pracownika IN (
  227. SELECT p.id_pracownika FROM pracownicy p
  228. MINUS
  229. SELECT p1.id_szefa FROM pracownicy p1);
  230.  
  231.  
  232. SELECT k.nazwa,COUNT(z.id_zamowienia),AVG(z.wartosc) FROM klienci k
  233. left join zamowienia z ON k.id_klienta = z.id_klienta
  234. GROUP BY k.miasto,k.nazwa;
  235.  
  236. UPDATE pracownicy
  237. SET prowizja = prowizja * 1.01
  238. WHERE id_pracownika IN(
  239. SELECT p.id_pracownika FROM pracownicy p
  240. join wydzialy w ON p.id_wydzialu = w.ID_wydzialu
  241. WHERE w.nazwa != 'SALES');
  242.  
  243. --grupa D
  244. INSERT INTO pracownicy VALUES(43,'JANICKI','KRZYSZTOF','A',667,7902,SYSDATE,2000,200,20);
  245.  
  246. SELECT w.id_wydzialu,w.nazwa FROM wydzialy w
  247. left join pracownicy p ON p.id_wydzialu = w.ID_WYDZIALU
  248. GROUP BY w.id_wydzialu,w.nazwa HAVING COUNT(p.id_wydzialu) < 1;
  249.  
  250. SELECT * FROM (SELECT p.nazwisko,p.imie,w.nazwa,SUM(z.wartosc) AS obroty FROM pracownicy p
  251. join etaty e ON p.id_etatu = e.id_etatu
  252. join wydzialy w ON p.id_wydzialu = w.id_wydzialu
  253. join klienci k ON p.id_pracownika = k.id_pracownika
  254. join zamowienia z ON k.id_klienta = z.id_klienta
  255. WHERE e.etat = 'SALESPERSON'
  256. GROUP BY p.nazwisko,p.imie,w.nazwa
  257. ORDER BY SUM(z.wartosc))
  258. WHERE ROWNUM <=1;
  259.  
  260. UPDATE pracownicy
  261. SET pensja = pensja * 1.1
  262. WHERE id_pracownika IN (SELECT p.id_pracownika FROM pracownicy p
  263. join klienci k ON p.id_pracownika = k.id_pracownika
  264. join etaty e ON p.id_etatu = e.id_etatu
  265. WHERE e.etat = 'SALESPERSON'
  266. GROUP BY p.id_pracownika HAVING COUNT(k.id_klienta)>2);
  267.  
  268. --grupa E
  269. INSERT INTO klienci VALUES (44,'KRZYSZTOF JANICKI',NULL,NULL,NULL,NULL,NULL,NULL,7902,10,NULL);
  270. INSERT INTO klienci(id_klienta,nazwa,id_pracownika,limit_kredytowy) VALUES (45,'KRZYSZTOF JANICKI',7902,10);
  271.  
  272. SELECT  * FROM (
  273. SELECT p.id_pracownika,p.imie,p.nazwisko,p.pensja FROM pracownicy p
  274. ORDER BY p.pensja DESC)
  275. WHERE ROWNUM <=3;
  276.  
  277. SELECT * FROM(
  278. SELECT p.nazwisko,p.imie,w.nazwa,SUM(z.wartosc) AS obroty FROM pracownicy p
  279. join wydzialy w ON p.id_wydzialu = w.id_wydzialu
  280. join klienci k ON p.id_pracownika = k.id_pracownika
  281. join zamowienia z ON k.id_klienta = z.id_klienta
  282. join etaty e ON p.id_etatu = e.id_etatu
  283. WHERE e.etat = 'SALESPERSON'
  284. GROUP BY p.nazwisko,p.imie,w.nazwa
  285. ORDER BY SUM(z.wartosc) DESC)
  286. WHERE ROWNUM <=1;
  287.  
  288. UPDATE pracownicy
  289. SET prowizja = prowizja * 1.02
  290. WHERE id_pracownika IN(
  291. SELECT p.id_pracownika FROM pracownicy p
  292. join klienci k ON p.id_pracownika = k.id_pracownika
  293. GROUP BY p.id_pracownika HAVING COUNT(k.id_klienta) >=1);
  294.  
  295. --grupa F
  296. INSERT INTO pracownicy VALUES (46,'JANICKI','KRZYSZTOF','A',667,7902,SYSDATE,2000,200,20);
  297.  
  298. SELECT z.id_zamowienia,z.data_zamowienia FROM zamowienia z
  299. join klienci k ON z.id_klienta = k.id_klienta
  300. WHERE k.miasto = 'BOSTON';
  301.  
  302. SELECT e.id_etatu,e.etat,AVG(p.pensja) FROM etaty e
  303. left join pracownicy p ON e.id_etatu = p.id_etatu
  304. GROUP BY e.id_etatu,e.etat;
  305.  
  306. UPDATE klienci k
  307. SET k.limit_kredytowy = k.limit_kredytowy +10*(SELECT COUNT(z.id_zamowienia) FROM zamowienia z
  308. join klienci k1 ON z.id_klienta = k1.id_klienta
  309. WHERE k1.id_klienta = k.id_klienta);
  310.  
  311. #########ŁOBO#######
  312. --insert into PRACOWNICY values (7666, 'BIZOŃ', 'ŁUKASZ','J',671,null,sysdate,2000,null,20)
  313.  
  314. --select s.region from siedziby s join wydzialy w on w.id_siedziby = s.ID_SIEDZIBY group by s.REGION having count(w.id_wydzialu) = 2
  315.  
  316. --select z.id_zamowienia from zamowienia z
  317. --join wiersze_zamowien wz on z.id_zamowienia = wz.id_zamowienia
  318. --group by z.id_zamowienia having count(wz.id_wiersza_zam) = 1
  319.  
  320. --select id_pracownika from pracownicy
  321. --minus
  322. --select id_pracownika from pracownicy where id_pracownika in(select id_szefa from pracownicy)
  323.  
  324. --select w.id_wydzialu from wydzialy w left join pracownicy p
  325. --on p.ID_WYDZIALU = w.id_wydzialu
  326. --group by w.id_wydzialu having count(p.id_wydzialu)=0
  327.  
  328. --select id_pracownika, pensja from
  329. --(select id_pracownika ,pensja from pracownicy order by pensja)
  330. --where rownum<4
  331.  -- select z.id_zamowienia, z.data_zamowienia from zamowienia z join klienci k
  332.  --on z.id_klienta = k.id_klienta where k.miasto = 'BOSTON'
  333.  
  334.  
  335. --3
  336.  
  337. --select id_produktu, opis, il_zam from
  338. --(select w.id_produktu, w.opis, sum(wz.ilosc) as il_zam from wyroby w join wiersze_zamowien wz on w.id_produktu=wz.ID_PRODUKTU
  339. --group by w.ID_PRODUKTU, w.opis order by sum(wz.ilosc) desc) where rownum<=3;
  340.  
  341. --select k.miasto, avg(z.wartosc), count(z.id_zamowienia)
  342. --from klienci k left join zamowienia z on k.id_klienta = z.id_klienta
  343. ----group by k.miasto
  344. --
  345. --select * from (select p.imie, p.nazwisko, w.nazwa, sum(z.wartosc) from pracownicy p
  346. --join wydzialy w on p.id_wydzialu = w.id_wydzialu
  347. --join klienci k on p.id_pracownika = k.id_pracownika
  348. --join zamowienia z on z.id_klienta = k.id_klienta
  349. --group by p.imie, p.nazwisko, w.nazwa order by sum(z.wartosc))
  350. --where rownum = 1
  351. --
  352. --select e.etat, avg(p.pensja) from etaty  e
  353. --left join pracownicy p on p.id_etatu= e.id_etatu
  354. --group by e.etat;
  355. ----
  356. --update pracownicy
  357. --set pensja = pensja*0.95
  358. --where id_pracownika in
  359. --(select p.id_pracownika from pracownicy p
  360. --join klienci k on p.id_pracownika = k.id_pracownika
  361. --join zamowienia z on z.id_klienta = k.id_klienta
  362. --where extract(month from z.data_zamowienia) = extract(month from add_months(sysdate,-1))
  363. --and extract(year from z.data_zamowienia) = extract(year from add_months(sysdate,-1))
  364. --group by p.id_pracownika having sum(z.wartosc) < 500)
  365. --
  366.  
  367. --update pracownicy
  368. --set prowizja = prowizja * 1.02
  369. --where id_pracownika in
  370. --(select id_szefa from pracownicy)
  371. --
  372. --update pracownicy
  373. --set prowizja = prowizja * 1.01
  374. --where id_pracownika in
  375. --(select p.id_pracownika from pracownicy p
  376. --join wydzialy w on p.id_wydzialu = w.id_wydzialu
  377. --where w.nazwa!='SALES')
  378.  
  379. --update pracownicy
  380. --set pensja = pensja*1.1
  381. --where id_pracownika in
  382. --(select p.id_pracownika from pracownicy p
  383. --join klienci k on p.id_pracownika = k.id_pracownika
  384. --group by p.id_pracownika having count(k.id_klienta)>2)
  385.  
  386. --update klienci k
  387. --set limit_kredytowy = limit_kredytowy + 10*(select count(z.id_zamowienia)
  388. --from zamowienia z join klienci k1 on z.id_klienta=k1.id_klienta
  389. --where k.id_klienta=k1.id_klienta)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement