GraphGists

随着UEFA欧洲杯2016的临近,让我们看看哪个足球俱乐部可能有更多球员参加锦标赛。

MATCH (a)-[r]->(b) WHERE labels(a) <> [] AND labels(b) <> []
RETURN DISTINCT head(labels(a)) AS This, type(r) as To, head(labels(b)) AS That LIMIT 10
qcMEiir

使用当前数据集,我们可以轻松获得球员数量最多的前10家俱乐部,这些球员被各自国家队征召。

MATCH (c:Club)<-[PLAYS_FOR]-(Player)
RETURN c.name AS Club, count(*) AS Internationals
ORDER BY Internationals DESC LIMIT 10;

曼联位列前三,拥有13名国际球员,我们可以看到这些球员是谁以及他们来自哪里。

MATCH (c:Club)<-[PLAYS_FOR]-(p:Player)-[REPRESENTS]->(n:NationalTeam)
WHERE c.name='Manchester United'
RETURN n.name AS Country, count(*) AS Count, collect(p.name) AS Internationals
ORDER BY Count DESC;

但我们也可以查看特定国家队的成员在哪些俱乐部效力。

MATCH (c:Club)<-[PLAYS_FOR]-(p:Player)-[REPRESENTS]->(n:NationalTeam)
WHERE n.name='Spain'
RETURN c.name AS Club, count(*) AS Count, collect(p.name) AS Internationals
ORDER BY Count DESC;

这让我们不禁要问:哪个国家需要从较少的俱乐部中选拔球员才能组建他们的球队?

MATCH (c:Club)<-[PLAYS_FOR]-(Player)-[REPRESENTS]->(n:NationalTeam)
RETURN n.name AS Country, count(DISTINCT c) AS Distinct_Teams
ORDER BY Distinct_Teams;

由此得出结论,英格兰球员似乎彼此更加熟悉,因为他们在一年中习惯于为同一个俱乐部效力。