Advertisement
dzocesrce

[BNP] Video records DML

Dec 21st, 2024 (edited)
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 4.33 KB | None | 0 0
  1. /*
  2. Korisnik(k_ime, ime, prezime, tip, pretplata, datum_reg, tel_broj, email)
  3. Premium_korisnik(k_ime*, datum, procent_popust)
  4. Profil(k_ime*, ime, datum)
  5. Video_zapis(naslov, jazik, vremetraenje, datum_d, datum_p)
  6. Video_zapis_zanr(naslov*, zanr)
  7. Lista_zelbi(naslov*, k_ime*, ime*)
  8. Preporaka(ID, k_ime_od*, k_ime_na*, naslov*, datum, komentar, ocena)
  9.  
  10. 1) Да се вратат имињата и презимињата на сите премиум корисници кои
  11. препорачале видео запис со времетраење подолго од 2 часа и за кој
  12. оставиле оцена поголема или еднаква на 4, подредени според датумот
  13. на регистрација во растечки редослед (времетраењето се чува во
  14. минути)
  15. 2) Да се вратат корисничкото име и бројот на видео записи кои му биле
  16. препорачани на корисникот кој дал најголем број на препораки.
  17. 3) За секој профил да се врати името на профилот и просечната оцена на
  18. видео записите во листата на желби асоцирана со тој профил.
  19. (Просечната оцена на секој видео запис се пресметува од сите оцени за
  20. тој видео запис).
  21. 4) Да се вратат жанровите заедно со бројот на препораки со коментар што
  22. го содржи зборот „interesting“, подредени според бројот на препораки
  23. во опаѓачки ред.
  24. 5) Да се врати список со насловите на видеата, времетраењето и бројот на
  25. препораки, за видеа кои се во листата на желби на најмалку два
  26. различни профили.
  27. 6) Да се вратат имињата на сите корисници кои имаат дадено препораки за
  28. видеа кои никој од нивните профили не ги има во листата на желби.
  29. */
  30.  
  31. 1.
  32. SELECT DISTINCT K.ime,K.prezime
  33. FROM Korisnik K JOIN Premium_korisnik PK ON K.k_ime=PK.k_ime JOIN Preporaka PR ON PK.k_ime=PR.k_ime_od JOIN Video_zapis VZ ON PR.naslov=VZ.naslov
  34. WHERE VZ.vremetraenje>120 AND PR.ocena>=4
  35. ORDER BY K.datum_reg
  36. 2.
  37. WITH Preporaki_po_korisnik AS (SELECT k_ime_od,COUNT(PR.ID) AS broj_preporaki
  38. FROM Korisnik K JOIN Preporaka PR ON PR.k_ime_od=K.k_ime
  39. GROUP BY k_ime_od),
  40. Max_preporaki AS (SELECT MAX(PPK.broj_preporaki) AS max
  41. FROM Preporaki_po_korisnik PPK),
  42. Max_preporaki_korisnici AS (SELECT k_ime_od
  43. FROM Preporaki_po_korisnik PPK,Max_preporaki MP
  44. WHERE PPK.broj_preporaki=MP.max)
  45. SELECT MPK.k_ime_od AS k_ime, COUNT(ID) AS broj_preporaki
  46. FROM Max_preporaki_korisnici MPK JOIN Preporaka ON MPK.k_ime_od=Preporaka.k_ime_na
  47. GROUP BY MPK.k_ime_od
  48. 3.
  49. SELECT ime,AVG(temp_ocena) AS po_profil
  50. FROM (SELECT DISTINCT P.ime,AVG(ocena) AS temp_ocena
  51. FROM Profil P JOIN Lista_zelbi LZ ON LZ.ime=P.ime JOIN Preporaka PR ON PR.naslov=LZ.naslov
  52. GROUP BY P.k_ime,PR.naslov)
  53. GROUP BY ime
  54. 4.
  55. SELECT VZZ.zanr,COUNT(komentar) AS broj_komentari
  56. FROM Video_zapis_zanr VZZ JOIN Preporaka PR ON VZZ.naslov=PR.naslov
  57. WHERE komentar LIKE '%interesting%'
  58. GROUP BY VZZ.zanr
  59. ORDER BY broj_komentari DESC
  60. 5.
  61. WITH Mutual_preporaki AS (SELECT VZ.naslov AS naslov,COUNT(P.ime) AS broj_profili
  62. FROM Video_zapis VZ JOIN Lista_zelbi LZ ON VZ.naslov=LZ.naslov JOIN Profil P ON LZ.ime=P.ime
  63. GROUP BY VZ.naslov
  64. HAVING COUNT(P.ime)>1)
  65. SELECT MP.naslov,VZ.vremetraenje,COUNT(P.ID) AS broj_preporaki
  66. FROM Mutual_preporaki MP JOIN Video_zapis VZ ON MP.naslov=VZ.naslov JOIN Preporaka P ON VZ.naslov=P.naslov
  67. GROUP BY MP.naslov
  68. 6.
  69. WITH Korisnici_zelbi AS (SELECT DISTINCT P.k_ime AS k_ime,LZ.naslov AS naslov
  70. FROM (Profil P JOIN Lista_zelbi LZ ON LZ.k_ime=P.k_ime) JOIN Video_zapis VZ ON LZ.naslov=VZ.naslov),
  71. Korisnici_nezelbi AS (SELECT DISTINCT KZ.k_ime AS k_ime,VZ.naslov AS naslov
  72. FROM Korisnici_zelbi KZ,Video_zapis VZ
  73. WHERE VZ.naslov NOT IN(SELECT naslov FROM Korisnici_zelbi))
  74. SELECT KN.k_ime
  75. FROM Korisnici_nezelbi KN JOIN Preporaka P ON P.k_ime_od=KN.k_ime AND P.naslov=KN.naslov
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement