#sql #case #amazon-redshift
#sql #case #amazon-redshift
Вопрос:
Как я могу извлечь максимальный столбец строки в таблице Redshift? например, одна из моих строк: value1, value2, value3, value4, value5 100, 56, 516, 1000, 516
Я хотел бы видеть value4: 1000 в результате?
Спасибо
Ответ №1:
В Redshift вы можете использовать greatest()
:
select t.*, greatest(value1, value2, value3, value4) as greatest_value
from mytable t
Обратите внимание, что greatest()
(а также least()
) игнорирует null
значения; с другой стороны, если все значения равны null
, вы получаете null
в результате.
Если вы хотите определить, из какого столбца получено наибольшее значение, используйте case
выражение:
select t.*, greatest(value1, value2, value3, value4) as greatest_value,
case greatest(value1, value2, value3, value4)
when value1 then 'value1'
when value2 then 'value2'
when value3 then 'value3'
when value4 then 'value4'
end as greatest_column
from mytable t
Связи здесь являются крайним случаем; вы не указываете, какую логику вы хотите использовать в этом событии, поэтому: приведенный выше запрос получает первый верхний столбец связи, как определено порядком ветвей в case
выражении.