Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Kreiranje cvora
- create(s:Student {brojIndeksa: '2018/0245', ime: 'Jovan', prezime: 'Milinkovic', datumRodjenja:date({day: 17, month: 10, year: 1999})})
- // Cvor za bazu
- create(p:Predmet{sifraPredmeta: 123, naziv: 'Baze podataka', ESPB: 6, semestar: 6})
- // definisanje veze izmedju cvorova
- match (s:Student), (p:Predmet)
- where s.brojIndeksa = '2018/0245' and p.sifraPredmeta = 123
- create(s)-[r:POLOZIO {ocena: 9}]->(p)
- // brisanje
- match (p:Predmet)
- where p.sifraPredmeta = 123
- set p.ESPB = 5
- remove p.semestar
- // setovonje polja
- match (s:Student)-[r:POLOZIO]->(p:Predmet)
- where s.brojIndeksa = '2018/0245' and p.sifraPredmeta = 123
- set r.datumPolaganja = date({day: 10, month: 7, year: 2018})
- // brisanje veze izmedju 2 konkretna cvora
- match (s:Student)-[r:POLOZIO]->(p:Predmet)
- where s.brojIndeksa = '2018/0245' and p.sifraPredmeta = 123
- delete (r)
- // obrisi sve veze izmedju Studenta i predmeta
- match (s:Student)-[r:POLOZIO]->(p:Predmet)
- delete (r)
- // obrisi sve veze tipa: POLOZIO gde god da su, npr izmdju Osoba i Grad, ako postoji, obrisace
- match (s)-[r:POLOZIO]->(p)
- delete (r)
- // obrisi CVOR
- match (p:Predmet)
- delete (p)
- // IMPORT BAZE
- bin\neo4j-admin load --from=/C:\Users\FON\Downloads\neo4j_baza/baza.dump --database=graph.db
- //--------------------------------------------SAJFER------------------------------------------------------//
- //1)prikazi mi sve sa labelom odeljenje
- match (o:Odeljenje)
- return (o)
- //1.a)Prikazati šifre, nazive i lokacije svih odeljenja u tabelarnom obliku.
- match (o:Odeljenje)
- return o.sifraOdeljenja, o.nazivOdeljenja, o.grad
- //2)Prikazati ime, prezime i platu svi zaposlenih koji imaju platu vecu od 30000, a manju od 50000. Rezultat
- //sortirati u opadajucem redosledu iznosa plate i rastucem redosledu prezimena.
- // nema between klauzulu
- match (z:Zaposleni)
- where z.plata >= 30000 and z.plata <= 50000
- return z.ime, z.prezime, z.plata
- order by z.plata desc, z.prezime asc
- //3) Prikazati ime, prezime i datum rodenja svih zaposlenih koji u svom imenu sadrže skup slova “An” ili
- //“an” ili cije ime ima tacno pet karaktera.
- match (z:Zaposleni)
- where z.ime =~ '.*[aA][nN].*' or z.ime =~ '.....'
- return z.ime, z.prezime, z.datumRodjenja
- //ILI
- match (z:Zaposleni)
- where z.ime =~ '.*[aA][nN].*' or z.ime =~ '.{5}$'
- return z.ime, z.prezime, z.datumRodjenja
- //4. Prikazati dan, mesec i godinu od kada je zaposlen svaki od zaposlenih
- match (z:Zaposleni)
- return z.datumZaposlenja.day as danZaposlenja, z.datumZaposlenja.month as mesecZaposlenja, z.datumZaposlenja.year as godinaZapolsenja
- //5 Prikazati ime i prezime svih zaposlenih koji rade u odeljenjima koja se nalaze u Nišu ili Novom Sadu.
- //Prikazati i naziv tih odeljenja.
- match (z:Zaposleni)-[r:RADI]->(o:Odeljenje)
- where o.grad = 'Nis' or o.grad = 'Novi Sad'
- return z.ime, z.prezime, o.nazivOdeljenja
- //6) Prikazati ime i prezime zaposlenog, kao i naziv odeljenja u kojem radi. U rezultatu prikazati i one
- //zaposlene za koje, u ovom trenutku, nije poznato u kom su odeljenju.
- match (z:Zaposleni)
- optional match (z)-[r:RADI]->(o:Odeljenje)
- return z.ime, z.prezime, o.nazivOdeljenja
- //6.a) Sva odeljenja, cak i ona koja nemaju zaposlene, desno spajanje u SQL-u
- match (o:Odeljenje)
- optional match (z:Zaposleni)-[r:RADI]->(o)
- return z.ime, z.prezime, o.nazivOdeljenja
- //7) Prikazati prezimena svih zaposlenih i plate povecane za 10% ako su iz odeljenja 10, za 20% ako su iz
- //odeljenja 20, za 30% ako su iz odeljenja 30, a za ostale prikazati trenutnu platu (upit realizovati pomocu
- //CASE naredbe). Zaokružiti plate sa povišicom na ceo broj.
- match (z:Zaposleni)-[r:RADI]->(o:Odeljenje)
- return z.ime, z.prezime, z.plata,
- case o.sifraOdeljenja when 10 then round(z.plata * 1.1)
- when 20 then round(z.plata * 1.2)
- when 30 then round(z.plata*1.3)
- else z.plata end as plataSaPovisicom
- //8) Prikazati minimalnu i maksimalnu platu zaposlenih po odeljenjima, kao i broj zaposlenih u svakom
- //odeljenju. Rezultat sortirati u rastucem redosledu šifre odeljenja.
- match (z:Zaposleni)-[r:RADI]->(o:Odeljenje)
- return o.sifraOdeljenja, max(z.plata), min(z.plata), count(*)
- order by o.sifraOdeljenja
- //9) Prikazati maksimalnu platu zaposlenih po odeljenjima i profilima ukoliko je maksimalna plata veca od
- //35000.
- //U SAJFERU NEMAMO HAVING, pa zbog toga pisemo ovu glupost:
- match (op:Obrazovni_profil)<-[r2:IMA]-(z:Zaposleni)-[r:RADI]->(o:Odeljenje)
- with op.sifraOP as sifraOP, o.sifraOdeljenja as sifraOdelj, max(z.plata) as maxPlata
- where maxPlata > 35000
- return sifraOP, sifraOdelj, maxPlata
- //10) Prikazati šifru radnika i datum do kojeg ce biti na probnom radu.
- match (rs:Radni_status)<-[r1:ANGAZOVAN]-(rm:Radno_mesto)
- where rs.nazivRS = 'probni rad'
- with(rm) as radnoMesto
- match (z:Zaposleni)-[r2:ANGAZOVAN]-(radnoMesto)
- return z.sifraZaposlenog, r2.datumOd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement