сравнить сумму и сумму различных условий - обработка после объединения? - PullRequest
0 голосов
/ 09 июня 2018

Привет, у меня есть отношения Artist - Collaborated -> Writer, и я хотел бы узнать, кто из художников пишет свои собственные песни.Таким образом, взвешенная грань между писателем и художником с одним и тем же именем должна быть больше, чем сумма всех других весов.

Мне удалось сделать это:

MATCH (n:Artist)-[r:Collaborated]-(m:Writer)
WITH n, m, sum(r.weight) as wrote
WHERE n.name = toLower(m.name) 
RETURN n.name as Node, wrote ORDER BY wrote descending;

, но я не уверен, как включить второе условие.Должен ли я использовать обработку после объединения?Любая помощь, пожалуйста?

Чтобы присоединиться к двум условиям ГДЕ, я попытался что-то вроде этого и сравнить первую сумму со второй суммой, но она не работает:

MATCH (o:Artist)-[q:Collaborated]-(p:Writer)
WITH o, p, sum(q.weight) as wrote1
WHERE o.name <> toLower(p.name) 
MATCH (n:Artist)-[r:Collaborated]-(m:Writer)
WITH n, m, sum(r.weight) as wrote2
WHERE n.name = toLower(m.name)  and wrote2>wrote1
RETURN n.name as Node, wrote2;

Этопример того, как выглядит мой график:

enter image description here

Я хотел бы знать, больше ли вес между eminem и eminem, чем все остальные веса

1 Ответ

0 голосов
/ 11 июня 2018

Во-первых, ваша модель немного странная, у вас есть два узла Eminem, один с меткой Artist, а другой с меткой Writer.Для моего POV у вас должен быть только один узел Eminem с обеими метками.

Чтобы ответить на ваш вопрос, я думаю, что этот запрос может вам помочь:

MATCH (o:Artist)-[r:Collaborated]->(p:Writer)
WITH o, CASE WHEN o.name = p.name THEN r.weight ELSE -1*r.weight END AS score
RETURN o, sum(score) AS score

Если счетвыше 0, тогда вы знаете, что eminem and eminem is bigger than all the other weights.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...