[英]Android SQLite get maximum value with respect to other columns
我有一個名為“tracked_exercises”的表,其中包含附加圖片中顯示的列(exercise_name、band、reps、kgs)
我想創建一個查詢,給定一個運動名稱,返回所有具有該運動名稱的這些條件的所有行
因此,在示例圖像中,如果我給“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 |
編輯:更新問題以使其更清楚
使用CTE
獲得所有的最大值reps
和kgs
,然后NOT EXISTS
的結果:
with cte as (
select t.band, t.reps, t.kgs
from (
select *,
row_number() over (partition by band order by reps desc) rnreps,
row_number() over (partition by band, reps order by kgs desc) rnkgs
from tracked_exercises
) t
where t.rnreps = 1 or t.rnkgs = 1
)
select c.* from cte c
where not exists (
select 1 from cte
where band = c.band and reps > c.reps and kgs >= c.kgs
)
請參閱演示。
結果:
| band | reps | kgs |
| ---- | ---- | ---- |
| No | 10 | 0 |
| No | 4 | 5 |
| No | 3 | 6.25 |
| red | 11 | 0 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.