我目前正在进行职业测试项目,我有ABM,TVL,STEM等专栏,其中相应地存储了用户(参加测试)的得分(每个类别)。这些字段名称也是类别名称。我还包括一个CareerResult列,其中必须存储分数最高的类别名称。
例如,如果用户有
的分数 ABM - 1
TVL - 2
STEM - 3
在CareerResult栏中,由于用户在此课程中获得最高分,因此应存储“STEM”一词。
这可能吗?如果是,我应该使用什么查询?
答案 0 :(得分:1)
您可以使用条件逻辑:
select . . .,
(case when stem = greatest(abm, tlv, stem) then 'stem'
when tlv = greatest(abm, tlv, stem) then 'tlv'
when abm = greatest(abm, tlv, stem) then 'abm'
end) as column_with_max
. . .
请注意,在tie的情况下,您只返回遇到的第一个值。
这也可以通俗地写成:
select . . .,
(case greatest(abm, tlv, stem)
when stem then 'stem'
when tlv then 'tlv'
when abm then 'abm'
end) as column_with_max
请注意,这两种方法都假设列不是NULL
。