Ես ներկայումս փորձում եմ հարցում ստեղծել՝ օգտագործելով ֆիլմերի neo4j տվյալների հավաքածուի օրինակը: Ցանկանում եմ ընտրել շատ պիտակներով (ավելի հայտնի) ֆիլմերը, ինչպես նաև ավելի քիչ վարկանիշ ունեցող ֆիլմերը:
Ես պարզել եմ, թե ինչպես գտնել ամենատարածվածը (միջինից ավելի).
MATCH (m:MOVIE)-[r:HAS_TAG]->()
WITH count(r) as tagnum, m.title as title_now
WITH avg(tagnum) as avgtagnum
MATCH (m:MOVIE)-[r:HAS_TAG]->()
WITH count(r) as tagnum, m.title as title_now, avgtagnum
WHERE tagnum > avgtagnum*3
RETURN title_now, avgtagnum, tagnum
ORDER BY tagnum DESC
Եվ նաև ինչպես ստանալ ավելի քիչ նշում ունեցողները
MATCH ()-[r:RATED]->(m:MOVIE)
WITH avg(r.rating) as avgrating
MATCH ()-[r:RATED]->(m:MOVIE)
WITH m.title as titlemovie, avgrating, avg(r.rating) as movierating
WHERE movierating < avgrating/2
RETURN titlemovie, avgrating, movierating
ORDER BY movierating ASC
ԲԱՅՑ երբ ես դրանք միավորում եմ, հարցումը երբեք չի ավարտվում:
MATCH ()-[r:RATED]->(m:MOVIE)
WITH avg(r.rating) as avgrating
MATCH ()-[r:RATED]->(m:MOVIE)
WITH m.title as titlemovie, avgrating, avg(r.rating) as movierating
WHERE movierating < avgrating/2
MATCH (m:MOVIE)-[r:HAS_TAG]->()
WITH count(r) as tagnum, m.title as title_now, titlemovie, avgrating, movierating
WITH avg(tagnum) as avgtagnum, titlemovie, avgrating, movierating
MATCH (m:MOVIE)-[r:HAS_TAG]->()
WITH count(r) as tagnum, m.title as title_now, avgtagnum, titlemovie, avgrating, movierating
WHERE tagnum > avgtagnum*3
RETURN titlemovie, avgrating, movierating, avgtagnum, tagnum
ORDER BY tagnum DESC, movierating ASC
Հարցն այն է, թե ինչպես կարող եմ գտնել իմ 2 պահանջներին համապատասխանող ֆիլմերը. ավելի քիչ նոտա և ավելի հայտնի: