SQL: как выбрать СТОЛБЕЦ с максимальным значением в Redshift?

#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 выражении.