我也是Neo4j 2.0的新手,並嘗試獲得兩個屬性總和(與重量)並將它們最終組合爲一個總重量。Neo4j 2.0 - 總結不同的屬性權重 - WHERE子句的問題
因此,首先在單獨的查詢,所以你可以看到正確的總和加權
1)語言=法語,能力超過6(規模1-10):
MATCH (User)-[Speaks]->(Language)
WHERE Language.language = 'French' AND Speaks.proficiency >=6
RETURN User.name, SUM(
CASE
WHEN Language.language='French' THEN Speaks.proficiency*3
END)*0.1 AS TOTAL_Language
ORDER BY TOTAL_Language DESC
User.name TOTAL_Language
David 3
Marion 1.8
2)技能=財經(1),銀行,IT,市場營銷權重= 1:
MATCH (User)-[IsSkilledIn]->(Skill)
WHERE Skill.skill IN ['Finance','Banking','IT','Marketing']
RETURN User.name, SUM(
CASE
WHEN Skill.skill='Finance' THEN IsSkilledIn.weight*10
WHEN Skill.skill='Banking' THEN IsSkilledIn.weight*5
WHEN Skill.skill='IT' THEN IsSkilledIn.weight*8
WHEN Skill.skill='Marketing' THEN IsSkilledIn.weight*1
END)*0.1 AS TOTAL_Skill
ORDER BY TOTAL_Skill DESC
User.name TOTAL_Skill
Eric 1.5
Marion 0.9
David 0.8
Hans 0.8
所以現在,我試圖將這些查詢合併成這樣:
3)法國> = 6個技能,財政,金融,IT,市場營銷:
MATCH (User)-[Speaks]->(Language) , (User)-[IsSkilledIn]->(Skill)
WHERE Language.language = 'French' AND Speaks.proficiency >=6 AND Skill.skill IN ['Finance','Banking','IT','Marketing']
RETURN User.name, SUM(
CASE
WHEN Language.language='French' THEN Speaks.proficiency*3
END)*0.1 AS TOTAL_Language,
SUM(
CASE
WHEN Skill.skill='Finance' THEN IsSkilledIn.weight*10
WHEN Skill.skill='Banking' THEN IsSkilledIn.weight*5
WHEN Skill.skill='IT' THEN IsSkilledIn.weight*8
WHEN Skill.skill='Marketing' THEN IsSkilledIn.weight*1
END)*0.1 AS TOTAL_Skill
ORDER BY TOTAL_Skill DESC
現在,我得到這些結果:
User.name TOTAL_Language TOTAL_Skill
Marion 3.6 0.9
David 3 0.8
馬里昂TOTAL_Language是兩倍的第一個答案。 所以我查了什麼可能是錯的,它必須在WHERE子句中,但我不知道什麼是錯的......任何想法?
而且我怎麼總結這兩個結果呢?
非常感謝您的投入!
將是巨大的有一個在控制檯或類似的示例圖 –