我目前正在使用一个足球比赛数据集,并试图让Cypher返回连续胜利最多的球队。
目前,我有一个collect语句,它创建一个列表,即[0,1,1,0,1,1,1],其中'0'表示失败,'1'表示成功。我正在努力回归连胜最多的球队。
下面是我的代码目前的样子:
MATCH(t1:TEAM)-[p:PLAYS]->(t2:TEAM)
WITH [t1,t2] AS teams, p AS matches
ORDER BY matches.time ASC
UNWIND teams AS team
WITH team.name AS teamName, coll
我只想从表中选择一行。此行保存表中的最大数目。我试过用麦克斯·芬奇,但对我来说不管用。我使用两个表来运行我的查询,第一个查询返回多行。
SELECT Rec_No FROM Records WHERE STATUS = 'Record Replaced';
select Item_No, Quantity from Rec_details
group by Item_No, Quantity
having Quantity=max(Quantity);
我在第二个查询中遇到了问题,因为我总是得到这些记录。
Item_No Quantity
-------
我很难理解如何在Cypher中正确地使用聚合函数。
假设我有标记为Animal的节点,具有属性size和species。对于每一个物种,我想得到最大的。
到目前为止,我知道我可以做到以下几点:
MATCH (n:Animal)
WITH n.species as species, max(n.size) as size
RETURN species, size
我将有效地得到相应物种的最大尺寸。
但是我怎样才能得到节点而不是物种呢?
我不能返回n,因为WITH语句,也不能将它注入WITH,因为它会破坏species聚合。
我知道这个问题已经问过几次了,但我想出的不同解决办法都是针对具体情况和使
我的桌子里有一些记录。
我要选择具有最大年龄的记录
如果我写在下面的查询,它工作得很好。
Select MAX(Age)
From Table
它运行良好。但如果我这样写,
Select FirstName, LastName, MAX(Age)
From Table
Group By FirstName, LastName
它不工作(显示所有记录)。我该如何解决这个问题呢?
我们有两个表,其中表A和表B需要连接。表A和表B之间是一对多的关系。我们现在可以在tableA.aID=tableB.aID上使用这个左连接tableB进行连接。我们希望确保表B上只有一条记录是join的,并且只是最新的记录。我们现在得到的记录不止一条。
SELECT student.*
FROM student
LEFT JOIN (SELECT B1.*
FROM medicalRecord AS B1
LEFT JOIN medicalRecord AS B2
首先,我介绍了Can Neo4j Cypher query do similar thing as "Having" in SQL?和https://neo4j.com/developer/kb/how-do-i-achieve-the-equivalent-of-a-sql-having-clause-with-cypher/。他们都有类似的建议,但在我的情况下似乎不起作用(可能是因为我有UNWIND条款?)。 下面是我的问题: MATCH (a:MyNode)-[:SOME_RELATIONSHIP]->()<-[:SOME_RELATIONSHIP]-(b:
我需要返回两个字段上不同的查询结果。此查询工作良好,并完成了我所需的工作:
match(a:Assembly)
where a.SourceLocation = ""
match (a)<-[r:REFERENCES{Type: "DLL"}]-(b:Assembly)
return distinct a.Name,r.HintPath
现在,我需要在结果中添加另一个字段。因为它是一个聚合,所以我只是返回max条目。
match(a:Assembly)
where a.SourceLocation = ""
match (a)<-[
可能重复:
我有一个聚合查询,如下所示:
SELECT TrainingID, Max(CompletedDate) as CompletedDate, Max(Notes) as Notes --This will only return the longest notes entry
FROM HR_EmployeeTrainings ET
WHERE (ET.AvantiRecID IS NULL OR ET.AvantiRecID = @avantiRecID)
GROUP BY AvantiRecID, TrainingID
这是工作的,并返回正
Neo4j v2.0.3.
在具有~30000节点的图中,当试图获取具有命令的节点的路径时:
MATCH p = (n {id: 'x2116500'})-[*]-(m) RETURN nodes(p) as nodes;
Cypher Web应用程序返回“未知错误”。但是,在一个有15个节点的数据库上,这个请求可以像预期的那样工作!
但请求:
MATCH p = (n {id: 'x2116500'})-[r]-(m) RETURN nodes(p) as nodes
返回一些节点,但并不是路径中的所有节点。同样的错误也发生在从路径获取关系的类似请求中,这个错
我有一个关于使用neo4j数据库的Cypher查询的问题。假设我有多个节点,如(节点:学生会{name:“Alice”})。如何获得密码查询中最频繁出现的名称?
我有一个简单的解决方案:
MATCH (n:student)
RETURN n.name,count(*) as times
ORDER BY times DESC
LIMIT 1;
有没有另一种方法可以获得相同的结果,而不使用ORDER和same子句?例如任何内置函数,如MAX()、..etc
当我使用这个cypher查询时
match p=(n)-[r*8]-(n)
where id(n)=548
with p
where ALL(x IN nodes(p)[1..length(p)] WHERE SINGLE(y IN nodes(p)[1..length(p)] WHERE x=y))
return count(p)
返回结果花了51922毫秒;这真的很长时间。我如何优化这个cypher查询?任何帮助都将不胜感激。
我使用py2neo连接到Neo4j。
例如,我有一个给出这个结果的查询(我实际上可以是任何东西:数字、字符串.)
number | first name | last name
--------------------------------------
1 | Anne | Hathaway
2 | Tom | Cruise
3 ....
每当我从python执行cypher查询(使用graph.cypher.execute或graph.cypher.stream命令)时,我都会得到
我有一个会说几种语言的用户。我正在写一个查询,看看用户是否会说英语。我想通过搜索用户节点和语言节点之间是否存在关系来了解用户是否会说英语。我正在使用rels.to_other或rels.to_others进行此操作。正如下文所述,两者都失败了。"to_other“和"to_others”方法的区别是什么?
irb(main):105:0> u
=> #<User uuid: "b1461edd-a574-44a7-9555-68659a361be2", created_at: Tue, 06 Oct 2015 16:21:26 +0000, n
如何获得Neo4j上每个节点的程度,然后找出在一个非常大的图(200万个节点和500万个关系)中,哪个节点的度最大?
我知道我可以用Cypher或Gremlin来达到这个目的,比如:
start n = node(*)
match (n)--(c)
return n, count(*) as connections
order by connections dsec
或
g.V.bothE
但是我的电脑只有2G~4G内存,当我发出上面的查询时,我总是等待很长时间,得到“未定义”。
有没有人在neo4j上使用gremlin或cypher查询如此庞大的图形方面有一些经验?
我正在尝试编写一个cypher查询,该查询查找节点a和b之间的路径,以便每个步骤都具有所有可用备选方案中小于15的最大时间戳值。
到目前为止,这是我的查询,除了在每个步骤中选择最大可能的时间戳之外,它做了所有的事情。我该如何表达这个条件?
MATCH path=(a:NODE)-[rs:PARENT*]->(b:NODE)
WHERE a.name = 'SOME_VALUE' and b.name = 'SOME_OTHER_VALUE' AND ALL (r IN rs
WHERE r.timestamp < 15)
RETURN pat
我有两个表,其中一个包含引用另一个的记录:
Goal
id (int)
name (text)
value_mask (text)
GoalStatus
id (int)
goal (int)
created (datetime)
value (text)
Goal.id == GoalStatus.goal
我想要做的是,为Goal中的每条记录从GoalStatus表中拉出最新的记录。目前,我知道如何做到这一点的唯一方法是对Goal (伪代码)中的每个记录进行单独的查询:
goals = db.query("SELECT * FROM Goal"
我在Cypher中有一个查询,它查找某个设备的最近一次。我希望匹配DB中的所有设备,其中它们的最后一个时间属性是它们的设备中的最后一个,然后返回它们的id。不幸的是,我无法创建一个正确的子查询。
我试过使用with和{}的例子,但是找不到任何有用的东西。
主要部分(工作):
MATCH (a:device)
MATCH (b:device)
WHERE certain filters
RETURN
CASE
WHEN a.last_seen > MAX(b.last_seen) THEN a.last_seen
WHEN a.last_seen < MAX(b.last_see
我试图找到动态传递返回参数的方法,这样我就可以对多个情况重用查询,比如在一个情况下,我需要两个节点字段,而在另一个情况下,我需要三个字段,例如
所以这里我需要用户的两个属性id和名称
Match (n:User) where id(n)={0} return n = {1}; //cypher params to pass= {0=1,1={id(n) as id,n.name as name}};
这里,我需要用户的三个属性,
Match (n:User) where id(n)={0} return n = {1}; //cypher params to pass= {0=1,1=