使用sql查找累积进度

lf5gs5x2  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(294)

我有一个sql表,如下所示:

我需要计算累计进度。
例如,s1000有三个f1分数。进度计算公式为(95-87)+(87-80)
对于s2000,计算值为(75-17)+(17-57)
如何使用sql实现这一点

wbgh16ku

wbgh16ku1#

看起来你的进步分数是最后一个减第一个。如果总是有三个分数,可以使用如下条件聚合:

select college_id, student_id,
       sum(case when f1 = 3 then score
                when f1 = 1 then - score
           end) as progress
from t
group by college_id, student_id;

如果不总是有三个分数,你可以概括如下:

select college_id, student_id,
       sum(case when f1 = cnt then score
                when f1 = 1 then - score
           end) as progress
from (select t.*,
             count(*) over (partition by college_id, student_id) as cnt
      from t
     ) t
group by college_id, student_id;

相关问题