Advertisement
dzocesrce

[BNP] Bank 2

Dec 14th, 2024 (edited)
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 8.04 KB | None | 0 0
  1. /*
  2. Релационата база е дефинирана преку следните релации:
  3. Vraboten(ID, ime, prezime, datum_r, datum_v, obrazovanie, plata)
  4. Shalterski_rabotnik(ID*)
  5. Klient(MBR_k, ime, prezime, adresa, datum)
  6. Smetka(MBR_k*, broj, valuta, saldo)
  7. Transakcija_shalter(ID, ID_v*, MBR_k*, MBR_k_s*, broj*, datum, suma, tip)
  8. Bankomat(ID, lokacija, datum, zaliha)
  9. Transakcija_bankomat(ID, MBR_k_s*, broj*, ID_b*, datum, suma).
  10.  
  11. 1) Да се најдат имињата и презимињата на сите шалтерски работници кои
  12. имаат направено трансакција за исплата на средства во износ поголем од
  13. 1000 EUR од сметка која работи со валута EUR, подредени според името
  14. на шалтерските работници.
  15. 2) Да се најдат имињата и презимињата на сите клиенти кои имаат
  16. направено трансакција за исплата на средства преку банкомат во износ
  17. поголем од 400 USD од сметка која работи со валута USD, подредени
  18. според името на клиентите.
  19. 3) Да се вратат сите сметки кои работат со валута MKD од кои е направена
  20. барем една трансакција за исплата преку шалтер и барем една
  21. трансакција за исплата преку банкомат во 2021 година, подредени
  22. според бројот на сметка.
  23. 4) Да се вратат сите клиенти кои направиле барем една трансакција преку
  24. банкомат (за сметки кои работат со валута EUR), но не направиле ниту
  25. една трансакција преку шалтер од истата сметка, подредени според
  26. името на клиентот.
  27. 5) За секој шалтерски работник да се врати неговата шифра, датумот и
  28. бројот на трансакции за датумот на кој има направено најголем број на
  29. трансакции, подредени според шифрата на шалтерски работник.
  30. 6) За секоја сметка која работи со валута EUR да се вратат просечната
  31. направена сума oд трансакции за исплата преку шалтер во 2021 година и
  32. просечната направена сума од трансакции за исплата преку банкомат во
  33. 2021 година, подредени според бројот на сметка.
  34. 7) За секој шалтерски работник број на трансакции кои ги има направено на сметки кои учествувале само во шалтерска трансакција.
  35. 8) Да се вратат податоци за шалтерските работници со завршени магистерски студии (MSc) и плата поголема од 50000 кои учествувале во трансакции направени за сметки за кои постојат и шалтерски и банкоматски трансакции.
  36. */
  37. 1.
  38. SELECT DISTINCT ime,prezime
  39. FROM Vraboten JOIN Shalterski_rabotnik ON Vraboten.ID=Shalterski_rabotnik.ID JOIN Transakcija_shalter ON Vraboten.ID=Transakcija_shalter.ID_v JOIN Smetka ON Transakcija_shalter.broj=Smetka.broj
  40. WHERE valuta='EUR' AND tip='isplata' AND suma>1000
  41. ORDER BY ime,prezime
  42.  
  43. 2.
  44. SELECT DISTINCT ime,prezime
  45. FROM Klient JOIN Smetka ON Klient.MBR_k=Smetka.MBR_k JOIN Transakcija_bankomat ON Smetka.broj=Transakcija_bankomat.broj
  46. WHERE valuta='USD' AND suma>400
  47. ORDER BY ime
  48.  
  49. 3.
  50. SELECT Smetka.MBR_k,Smetka.broj,valuta,saldo
  51. FROM Smetka JOIN Transakcija_shalter ON Smetka.broj=Transakcija_shalter.broj
  52. WHERE Smetka.broj IN
  53. (SELECT Smetka.broj
  54. FROM Smetka JOIN Transakcija_shalter ON Smetka.broj=Transakcija_shalter.broj
  55. WHERE Smetka.valuta='MKD' AND datum LIKE '2021-__-__' AND tip='isplata'
  56. INTERSECT
  57. SELECT Smetka.broj
  58. FROM Smetka JOIN Transakcija_bankomat ON Smetka.broj=Transakcija_bankomat.broj
  59. WHERE Smetka.valuta='MKD' AND datum LIKE '2021-__-__'
  60. ORDER BY Smetka.broj)
  61.  
  62. 4.
  63. SELECT DISTINCT Smetka.MBR_k,ime,prezime,adresa,datum
  64. FROM Klient JOIN Smetka ON Klient.MBR_k=SMetka.MBR_k
  65. WHERE Smetka.broj IN (SELECT DISTINCT Smetka.broj FROM Smetka WHERE valuta='EUR'
  66. EXCEPT
  67. SELECT DISTINCT Smetka.broj
  68. FROM Smetka JOIN Transakcija_shalter ON Smetka.broj=Transakcija_shalter.broj
  69. WHERE valuta='EUR'
  70. INTERSECT
  71. SELECT DISTINCT Smetka.broj
  72. FROM Smetka JOIN Transakcija_bankomat ON Smetka.broj=Transakcija_bankomat.broj
  73. WHERE valuta='EUR')
  74. ORDER BY ime,prezime
  75.  
  76. 5.
  77. WITH TEMP AS (SELECT Vraboten.ID AS vraboten,Transakcija_shalter.datum AS datum,COUNT(*) AS broj_transakcii
  78. FROM Vraboten JOIN Transakcija_shalter ON Vraboten.ID=Transakcija_shalter.ID_v
  79. GROUP BY Vraboten.ID,Transakcija_shalter.datum),
  80. TEMP2 AS (SELECT vraboten,datum,MAX(broj_transakcii) AS max
  81. FROM TEMP
  82. GROUP BY vraboten)
  83.  
  84. SELECT TEMP.vraboten,TEMP.datum,TEMP.broj_transakcii
  85. FROM TEMP JOIN TEMP2 ON TEMP.vraboten=TEMP2.vraboten
  86. WHERE TEMP.broj_transakcii=TEMP2.max
  87.  
  88. 6.
  89. SELECT COALESCE(broj1,broj2) AS broj,prosecna_suma_shalter,prosecna_suma_bankomat
  90. FROM
  91. (SELECT Smetka.broj AS broj1,AVG(suma) AS prosecna_suma_shalter
  92. FROM Smetka LEFT OUTER JOIN Transakcija_shalter ON Smetka.broj=Transakcija_shalter.broj AND Transakcija_shalter.datum LIKE '2021%'
  93. WHERE valuta='EUR' AND tip='isplata'
  94. GROUP BY Smetka.broj)
  95. FULL OUTER JOIN
  96. (SELECT Smetka.broj AS broj2,AVG(suma) AS prosecna_suma_bankomat
  97. FROM Smetka LEFT OUTER JOIN Transakcija_bankomat ON Smetka.broj=Transakcija_bankomat.broj AND Transakcija_bankomat.datum LIKE '2021%'
  98. WHERE valuta='EUR'
  99. GROUP BY Smetka.broj)
  100. ON broj1=broj2
  101. ORDER BY broj
  102. ------
  103. SELECT s.MBR_k,s.broj,AVG(tb.suma) AS prosechna_isplata_bankomat,avg(ts.suma) AS prosechna_isplata_shalter
  104. FROM Smetka s
  105. JOIN Transakcija_bankomat tb ON s.broj=tb.broj AND tb.datum LIKE '2021%'
  106. JOIN Transakcija_shalter ts ON s.broj=ts.broj AND ts.tip='isplata' AND ts.datum LIKE '2021%'
  107. WHERE s.valuta='EUR' or s.valuta='USD'
  108. GROUP BY s.broj
  109. ORDER BY s.broj
  110.  
  111. 7.
  112. SELECT Vraboten.ID,ime,prezime,COUNT(Transakcija_shalter.ID) AS br_transakcii
  113. FROM Vraboten JOIN Shalterski_rabotnik ON Vraboten.ID=Shalterski_rabotnik.ID JOIN Transakcija_shalter ON Shalterski_rabotnik.ID=Transakcija_shalter.ID_v JOIN Smetka ON Smetka.broj=Transakcija_shalter.broj
  114. WHERE Smetka.broj IN (SELECT Smetka.broj
  115. FROM Smetka JOIN Transakcija_shalter ON Smetka.MBR_k=Transakcija_shalter.MBR_k_s
  116. WHERE Smetka.broj NOT IN
  117. (SELECT Smetka.broj
  118. FROM Transakcija_bankomat JOIN Smetka ON Smetka.MBR_k=Transakcija_bankomat.MBR_k_s))
  119. GROUP BY Vraboten.ID
  120.  
  121. 8.
  122. SELECT DISTINCT ime,prezime
  123. FROM Vraboten JOIN Shalterski_rabotnik ON Vraboten.ID=Shalterski_rabotnik.ID JOIN Transakcija_shalter ON Shalterski_rabotnik.ID=Transakcija_shalter.ID_v JOIN Smetka ON Smetka.broj=Transakcija_shalter.broj
  124. WHERE Vraboten.obrazovanie='MSc' AND Vraboten.plata>50000 AND Smetka.broj IN
  125. (SELECT Smetka.broj
  126. FROM Smetka JOIN Transakcija_shalter ON Smetka.MBR_k=Transakcija_shalter.MBR_k_s
  127. WHERE Smetka.broj IN
  128. (SELECT Smetka.broj
  129. FROM Transakcija_bankomat JOIN Smetka ON Smetka.MBR_k=Transakcija_bankomat.MBR_k_s))
  130. --------
  131. SELECT DISTINCT ime,prezime
  132. FROM Vraboten JOIN Shalterski_rabotnik ON Vraboten.ID=Shalterski_rabotnik.ID JOIN Transakcija_shalter ON Shalterski_rabotnik.ID=Transakcija_shalter.ID_v JOIN Smetka ON Smetka.broj=Transakcija_shalter.broj
  133. WHERE Vraboten.obrazovanie='MSc' AND Vraboten.plata>50000 AND Smetka.broj IN
  134. (SELECT Smetka.broj
  135. FROM Smetka JOIN Transakcija_shalter ON Smetka.MBR_k=Transakcija_shalter.MBR_k_s
  136. INTERSECT
  137. SELECT Smetka.broj
  138. FROM Transakcija_bankomat JOIN Smetka ON Smetka.MBR_k=Transakcija_bankomat.MBR_k_s)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement