Advertisement
Guest User

Untitled

a guest
May 21st, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.79 KB | None | 0 0
  1.  
  2. // Kreiranje cvora
  3. create(s:Student {brojIndeksa: '2018/0245', ime: 'Jovan', prezime: 'Milinkovic', datumRodjenja:date({day: 17, month: 10, year: 1999})})
  4.  
  5. // Cvor za bazu
  6. create(p:Predmet{sifraPredmeta: 123, naziv: 'Baze podataka', ESPB: 6, semestar: 6})
  7.  
  8. // definisanje veze izmedju cvorova
  9. match (s:Student), (p:Predmet)
  10. where s.brojIndeksa = '2018/0245' and p.sifraPredmeta = 123
  11. create(s)-[r:POLOZIO {ocena: 9}]->(p)
  12.  
  13. // brisanje
  14. match (p:Predmet)
  15. where p.sifraPredmeta = 123
  16. set p.ESPB = 5
  17. remove p.semestar
  18.  
  19. // setovonje polja
  20. match (s:Student)-[r:POLOZIO]->(p:Predmet)
  21. where s.brojIndeksa = '2018/0245' and p.sifraPredmeta = 123
  22. set r.datumPolaganja = date({day: 10, month: 7, year: 2018})
  23.  
  24. // brisanje veze izmedju 2 konkretna cvora
  25. match (s:Student)-[r:POLOZIO]->(p:Predmet)
  26. where s.brojIndeksa = '2018/0245' and p.sifraPredmeta = 123
  27. delete (r)
  28.  
  29. // obrisi sve veze izmedju Studenta i predmeta
  30. match (s:Student)-[r:POLOZIO]->(p:Predmet)
  31. delete (r)
  32.  
  33.  
  34. // obrisi sve veze tipa: POLOZIO gde god da su, npr izmdju Osoba i Grad, ako postoji, obrisace
  35. match (s)-[r:POLOZIO]->(p)
  36. delete (r)
  37.  
  38. // obrisi CVOR
  39. match (p:Predmet)
  40. delete (p)
  41.  
  42. // IMPORT BAZE
  43. bin\neo4j-admin load --from=/C:\Users\FON\Downloads\neo4j_baza/baza.dump --database=graph.db
  44.  
  45. //--------------------------------------------SAJFER------------------------------------------------------//
  46. //1)prikazi mi sve sa labelom odeljenje
  47. match (o:Odeljenje)
  48. return (o)
  49.  
  50. //1.a)Prikazati šifre, nazive i lokacije svih odeljenja u tabelarnom obliku.
  51. match (o:Odeljenje)
  52. return o.sifraOdeljenja, o.nazivOdeljenja, o.grad
  53.  
  54. //2)Prikazati ime, prezime i platu svi zaposlenih koji imaju platu vecu od 30000, a manju od 50000. Rezultat
  55. //sortirati u opadajucem redosledu iznosa plate i rastucem redosledu prezimena.
  56. // nema between klauzulu
  57. match (z:Zaposleni)
  58. where z.plata >= 30000 and z.plata <= 50000
  59. return z.ime, z.prezime, z.plata
  60. order by z.plata desc, z.prezime asc
  61.  
  62. //3) Prikazati ime, prezime i datum rodenja svih zaposlenih koji u svom imenu sadrže skup slova “An” ili
  63. //“an” ili cije ime ima tacno pet karaktera.
  64.  
  65. match (z:Zaposleni)
  66. where z.ime =~ '.*[aA][nN].*' or z.ime =~ '.....'
  67. return z.ime, z.prezime, z.datumRodjenja
  68.  
  69. //ILI
  70. match (z:Zaposleni)
  71. where z.ime =~ '.*[aA][nN].*' or z.ime =~ '.{5}$'
  72. return z.ime, z.prezime, z.datumRodjenja
  73.  
  74. //4. Prikazati dan, mesec i godinu od kada je zaposlen svaki od zaposlenih
  75. match (z:Zaposleni)
  76. return z.datumZaposlenja.day as danZaposlenja, z.datumZaposlenja.month as mesecZaposlenja, z.datumZaposlenja.year as godinaZapolsenja
  77.  
  78. //5 Prikazati ime i prezime svih zaposlenih koji rade u odeljenjima koja se nalaze u Nišu ili Novom Sadu.
  79. //Prikazati i naziv tih odeljenja.
  80. match (z:Zaposleni)-[r:RADI]->(o:Odeljenje)
  81. where o.grad = 'Nis' or o.grad = 'Novi Sad'
  82. return z.ime, z.prezime, o.nazivOdeljenja
  83.  
  84.  
  85. //6) Prikazati ime i prezime zaposlenog, kao i naziv odeljenja u kojem radi. U rezultatu prikazati i one
  86. //zaposlene za koje, u ovom trenutku, nije poznato u kom su odeljenju.
  87. match (z:Zaposleni)
  88. optional match (z)-[r:RADI]->(o:Odeljenje)
  89. return z.ime, z.prezime, o.nazivOdeljenja
  90.  
  91. //6.a) Sva odeljenja, cak i ona koja nemaju zaposlene, desno spajanje u SQL-u
  92. match (o:Odeljenje)
  93. optional match (z:Zaposleni)-[r:RADI]->(o)
  94. return z.ime, z.prezime, o.nazivOdeljenja
  95.  
  96.  
  97. //7) Prikazati prezimena svih zaposlenih i plate povecane za 10% ako su iz odeljenja 10, za 20% ako su iz
  98. //odeljenja 20, za 30% ako su iz odeljenja 30, a za ostale prikazati trenutnu platu (upit realizovati pomocu
  99. //CASE naredbe). Zaokružiti plate sa povišicom na ceo broj.
  100. match (z:Zaposleni)-[r:RADI]->(o:Odeljenje)
  101. return z.ime, z.prezime, z.plata,
  102. case o.sifraOdeljenja when 10 then round(z.plata * 1.1)
  103. when 20 then round(z.plata * 1.2)
  104. when 30 then round(z.plata*1.3)
  105. else z.plata end as plataSaPovisicom
  106.  
  107.  
  108. //8) Prikazati minimalnu i maksimalnu platu zaposlenih po odeljenjima, kao i broj zaposlenih u svakom
  109. //odeljenju. Rezultat sortirati u rastucem redosledu šifre odeljenja.
  110. match (z:Zaposleni)-[r:RADI]->(o:Odeljenje)
  111. return o.sifraOdeljenja, max(z.plata), min(z.plata), count(*)
  112. order by o.sifraOdeljenja
  113.  
  114. //9) Prikazati maksimalnu platu zaposlenih po odeljenjima i profilima ukoliko je maksimalna plata veca od
  115. //35000.
  116. //U SAJFERU NEMAMO HAVING, pa zbog toga pisemo ovu glupost:
  117. match (op:Obrazovni_profil)<-[r2:IMA]-(z:Zaposleni)-[r:RADI]->(o:Odeljenje)
  118. with op.sifraOP as sifraOP, o.sifraOdeljenja as sifraOdelj, max(z.plata) as maxPlata
  119. where maxPlata > 35000
  120. return sifraOP, sifraOdelj, maxPlata
  121.  
  122.  
  123. //10) Prikazati šifru radnika i datum do kojeg ce biti na probnom radu.
  124.  
  125. match (rs:Radni_status)<-[r1:ANGAZOVAN]-(rm:Radno_mesto)
  126. where rs.nazivRS = 'probni rad'
  127. with(rm) as radnoMesto
  128. match (z:Zaposleni)-[r2:ANGAZOVAN]-(radnoMesto)
  129. return z.sifraZaposlenog, r2.datumOd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement