neo4j - 需要帮助确定 2 位演员在最多的电影中一起表演的次数(密码)
问题描述
我编写了下面的命令来列出在不同电影中一起表演的演员对,并列出这对演员一起表演的次数。
match (person1)-[:ACTED_IN]->(Movie)<-[:ACTED_IN]-(person2)
return DISTINCT Movie.title, person1.name, person2.name, count(Movie) AS pairs
ORDER BY pairs DESC
我觉得这是不准确的,因为它计算重复实例,即 -x
和y
被计为一个实例,并且y
和x
被计为一个单独的实例。有谁知道如何解决这一问题?
任何帮助,将不胜感激。
解决方案
要正确查看每对演员出现的电影(按共享电影的降序排列),这应该有效:
MATCH (p1:Person)-[:ACTED_IN]->(m)<-[:ACTED_IN]-(p2:Person)
RETURN p1.name, p2.name, COLLECT(m) AS movies, COUNT(m) AS pairs
ORDER BY pairs DESC
此查询考虑到聚合函数(如COUNT
和)使用相同or子句COLLECT
中的非聚合元素作为“分组键”的事实。此外,不需要,因为聚合函数隐式返回不同的行(如果有任何分组键)。WITH
RETURN
DISTINCT
推荐阅读
- python - 机械汤python填充登录字段失败
- c# - 如何使用 Json Writer 将文本附加到字典
- android - 带有请求参数和 json 正文的 HttpUrlConnection POST
- c# - '无法从文本'local:ImageButton'创建'类型'
- c++ - C++ builder:如何将 TRectF 转换为 Variant
- sql - 按日期分组的频率不同值
- rdf - GraphDB 是否对命名空间条款有理由?
- javascript - 我需要组合两个图像,以便它们在 discord.js 中并排在一起
- react-redux - 在监听器函数中访问 redux 的最后状态
- kendo-ui - 如何在 Kendo Grid 中将字符串数据类型列作为复选框?