То, что я пытаюсь сделать, довольно просто. И концептуально, я точно знаю, что я хочу сделать. У меня просто проблемы с синтаксисом ActiveRecord. (FWIW, мой бэкэнд - Postgres, но я не думаю, что это имеет здесь значение?)
Для Классического чемпионата мира по тетрису (CTWC) я строил простую базу данных, которая содержит все матчи, которые когда-либо играл игрок. Турниры проводятся ежегодно, и в настоящее время в системе есть данные за 2012-2018 годы. API JSON REST здесь:
https://ctwc.herokuapp.com/api/matches
В настоящее время я пытаюсь добавить на сайт функцию «Карта игрока». Многие постоянные игроки соревновались в CTWC на протяжении многих лет. Я хочу создать на сайте функцию, позволяющую зрителям просматривать статистику по любому игроку.
Я работаю над списком "Участие" . Для данного игрока - скажем, «Quaid» - я хочу получить из БД самый высокий раунд, который Quaid когда-либо достигал в данном году. Но в настоящее время что-то не так с моим запросом; Я думаю, что я неправильно использую функцию "group by".
По сути, я хочу получить все совпадения для "Quaid", а затем сгруппировать по столбцу "Year"; функция агрегации - я хочу фильтровать по «Максимум (раунд)» - (так как я забочусь только о получении данных за самый высокий раунд, к которому Quaid продвинулся в любой данный год).
В частности, напечатано, вот мой запрос, который не работает:
Match.where("p1 like 'Quaid%' or p2 like 'Quaid%'").group('Maximum(matches.round)', :year)