所以我在我的android房间dao中有一个查询,其中我收到了训练完成百分比,计算如下:
(完成套数/总训练套数)*100
但是,我的问题是,总的训练集是通过对特定训练的每次训练的总目标集求和来计算的。
通过对每个日志条目的计数求和来计算完成的集合。因此,锻炼百分率有可能达到100%。
此外,用户可以为特定练习输入比目标集多得多的集合。我需要能够设置一个日志条目的数量是每个练习计数限制。
(日志条目表有一个junctionid,对于每个练习都是唯一的。)
如何将此查询更改为只计算每个练习的前3个logid(忽略任何超过此值的项)?
er图
以下是我目前的查询:
@Query("WITH entries AS ( SELECT COUNT(log_id) AS log_entry_count FROM log_entries_table AS l
LEFT JOIN exercise_workout_junction_table AS e ON e.exercise_workout_id = l.junction_id
WHERE l.date IN (:dates) AND e.workout_id = :workoutID),
sets AS ( SELECT sum(set_number) AS set_sum FROM exercise_workout_goals_table AS eg
LEFT JOIN exercise_workout_junction_table ej ON ej.exercise_workout_id = eg.junction_id
WHERE ej.workout_id = :workoutID) SELECT ((SELECT log_entry_count FROM entries) *100/
(SELECT set_sum FROM sets)) AS workout_completion_pct" )
LiveData<String> getWorkoutCompletionPercentage(int workoutID, List<String> dates);
1条答案
按热度按时间yduiuuwa1#
我不确定我是否正确理解了您想要的内容,但是您可以尝试这样的查询(也许您会得到主要思想并将其固定到您的用例中):