Как создать таблицу счетов для ключей категориальных свойств? - PullRequest
1 голос
/ 14 октября 2019

У меня есть два фрагмента кода, каждый из которых создает таблицу с названием команды и количеством выигрышей, соответствующим количеством потерь для каждой команды (для результатов футбола).

MATCH (t:Team)-[r]-(m:Match)
WHERE r.result = 'WIN'
WITH t, t.name AS team_name, COUNT(r.result) AS num_wins
RETURN team_name, num_wins;

MATCH (t:Team)-[r]-(m:Match)
WHERE r.result = 'LOSE'
WITH t, t.name AS team_name, COUNT(r.result) AS num_lose
RETURN team_name, num_lose;

Отношение имеет две альтернативы:HOME_TEAM и: AWAY_TEAM. Для этого конкретного набора данных нет связей.

Я бы хотел, чтобы результаты, приведенные выше, вместо этого были представлены в одной таблице с тремя заголовками: "team_name", "num_wins" и "num_lose". Как мне это сделать? Все, что я пытался сделать до сих пор, провалилось.

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Если предположить, что между Team с и Match с существуют отношения, которые либо не имеют result, либо имеют какое-либо другое значение результата (например, TIE), этот запрос сначала фильтрует для WIN или LOSE результатов, а затем просто использует агрегирующую функцию COUNT для подсчета побед и поражений для каждой команды.

MATCH (t:Team)-[r]-(:Match)
WHERE r.result IN ['WIN', 'LOSE']
RETURN t.name AS team_name, r.result AS result, COUNT(*) AS cnt;

(В этом запросе также предполагается, что команды имеют уникальные имена. )

0 голосов
/ 15 октября 2019

Другой подход, который вы можете использовать, состоит в том, чтобы подсчитать отношения, которые имели «выигрышный» результат, и вычесть его из общего количества отношений (которое можно получить путем подсчета степеней отношений). Это работает, только если «WIN» и «LOSE» являются единственно возможными результатами, и если всегда есть результат:

MATCH (t:Team)-[r:HOME_TEAM|AWAY_TEAM]-()
WHERE r.result = 'WIN'
WITH t, count(r) as wins
RETURN t.name as team_name, wins, size((t)-[:HOME_TEAM|AWAY_TEAM]-()) - wins as losses
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...