我正试图用sql来解决一个问题(在结合sql和python时我能够做到这一点)。
基本上,我想做的是计算每个候选人的分数变化,其中一个分数包括加入一个分数查找表,然后将这些单独的事件分数相加。如果候选人失败了,他们需要重新参加活动。下面是一个示例输出:
| brandi_id | retest | total_score |
|-----------|--------|-------------|
| 1 | true | 128 |
| 1 | false | 234 |
| 2 | true | 200 |
| 2 | false | 230 |
| 3 | false | 265 |
我想要的是首先只计算那些参加复试的考生的分数变化,其中分数变化将只是复试总分数为真减去复试=假的差值:
| brandi_id | difference |
|-----------|------------|
| 1 | 106 |
| 2 | 30 |
这是我正在使用的sql(我需要使用python)
select e.brandi_id, e.retest, sum(sl.scaled_score) as total_score
from event as e
left join apf_score_lookup as sl
on sl.asmnt_code = e.asmnt_code
and sl.raw_score = e.score
where e.asmnt_code in ('APFPS','APFSU','APF2M')
group by e.brandi_id, e.retest
order by e.brandi_id;
我认为解决方案包括使用延迟和分区,但我不能得到它。谢谢!
1条答案
按热度按时间nhhxz33t1#
如果有人只重新测试一次,则可以使用连接:
你没有描述你的table布局。如果结果来自您的问题中的查询,您可以将其作为cte插入。