У меня есть таблица с именем 'tracked_exercises', которая содержит столбцы, показанные на прилагаемом рисунке (имя упражнения, группа, повторы, килограммы)
Я хотел бы создать запрос, в котором задано имя упражнения, которое возвращает все строки, которые иметь любое из этих условий для этого упражнения.
- Максимальное количество повторений с каждой уникальной полосой
- Максимальное количество килограммов на каждом повторении с соответствующей полосой (но не если максимальные килограммы меньше или равны максимальным килограммам с более высокими повторениями. Поэтому, если у вас есть 2 повторения с 6 кг и 3 повторения с 6 кг, я не хочу, чтобы 2 повторения с 6 кг возвращались)
Так что в примере изображения, если я даю 'Muscle Up' Я хотел бы получить обратно
| band | reps | kgs |
| red | 10 | 0 |
| purple | 15 | 0 |
| No | 5 | 0 |
| No | 4 | 10 |
| No | 2 | 15 |
Мне удалось получить максимальное количество повторений для каждой уникальной группы с помощью приведенного ниже запроса, но мне так и не удалось выяснить, как получить строки с максимальными килограммами
@Query("SELECT * FROM tracked_exercises INNER JOIN (SELECT band, MAX(reps) AS Maxreps FROM tracked_exercises WHERE exercise_name =:name GROUP BY band ) topset ON tracked_exercises.band = topset.band AND tracked_exercises.reps = topset.Maxreps")
List<TrackedExercise> getPersonalRecords(String name);
Извините, если это не ясно, прокомментируйте, если вам нужна дополнительная информация
Пример таблицы отслеживаемых упражнений
Другой пример:
| band | reps | kgs |
| No | 3 | 2.5 |
| No | 3 | 5 |
| No | 3 | 6.25|
| No | 10 | 0 |
| No | 9 | 0 |
| No | 4 | 5 |
| No | 4 | 3.75|
| red | 11 | 0 |
| red | 10 | 0 |
| No | 2 | 6.25|
Мне бы хотелось получить результат:
| band | reps | kgs |
| No | 10 | 0 |
| red | 11 | 0 |
| No | 3 | 6.25|
| No | 4 | 5 |
Редактировать: обновлен вопрос, чтобы сделать его более понятным