【发布时间】:2020-05-19 12:37:42
【问题描述】:
所以我在我的 android ROOM DAO 中有一个查询,其中我收到了锻炼完成百分比,计算如下:
(完成组/总锻炼组)* 100
但是,我遇到的问题是总锻炼集是通过对特定锻炼的每个锻炼的总目标集求和来计算的。
完成的集合是通过对每个日志条目的 COUNT 求和来计算的。因此,锻炼百分比有可能达到 100%。
此外,对于特定练习,用户可以输入比目标组更多的组。 我需要能够为每次练习计算的日志条目数量设置限制。
(日志条目表有一个 junctionID,对于每个练习都是唯一的。)
如何更改此查询以仅计算每个练习的前 3 个 logID(忽略超过此值的任何内容)?
以下是我当前的查询:
@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);
【问题讨论】:
标签: android sql sqlite android-room