Rails / ActiveRecord: Как написать функцию агрегации Maximum (...) при использовании Group By (...) "Rails Way?" - PullRequest
0 голосов
/ 21 января 2019

То, что я пытаюсь сделать, довольно просто. И концептуально, я точно знаю, что я хочу сделать. У меня просто проблемы с синтаксисом ActiveRecord. (FWIW, мой бэкэнд - Postgres, но я не думаю, что это имеет здесь значение?)

Для Классического чемпионата мира по тетрису (CTWC) я строил простую базу данных, которая содержит все матчи, которые когда-либо играл игрок. Турниры проводятся ежегодно, и в настоящее время в системе есть данные за 2012-2018 годы. API JSON REST здесь:

https://ctwc.herokuapp.com/api/matches

Here's a sample of what the data looks like.

В настоящее время я пытаюсь добавить на сайт функцию «Карта игрока». Многие постоянные игроки соревновались в CTWC на ​​протяжении многих лет. Я хочу создать на сайте функцию, позволяющую зрителям просматривать статистику по любому игроку.

A mock-up of a

Я работаю над списком "Участие" . Для данного игрока - скажем, «Quaid» - я хочу получить из БД самый высокий раунд, который Quaid когда-либо достигал в данном году. Но в настоящее время что-то не так с моим запросом; Я думаю, что я неправильно использую функцию "group by".

По сути, я хочу получить все совпадения для "Quaid", а затем сгруппировать по столбцу "Year"; функция агрегации - я хочу фильтровать по «Максимум (раунд)» - (так как я забочусь только о получении данных за самый высокий раунд, к которому Quaid продвинулся в любой данный год). В частности, напечатано, вот мой запрос, который не работает:

Match.where("p1 like 'Quaid%' or p2 like 'Quaid%'").group('Maximum(matches.round)', :year)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...