DB2 SQL: внутри группы назначьте значение столбца 2, когда столбец 1 максимален, каждой строке

У меня есть данные, которые выглядят так, для одной группы, т. е. есть еще такие данные, расположенные друг над другом:

введите здесь описание изображения

Теперь в каждой группе я хочу создать новый столбец под названием «отношения», где я беру значение фактора (когда год = 2018 (максимум)) и беру каждое значение фактора каждого строки и разделить на значение фактора 2018. Я могу сделать это в два шага с выражением CLT, это все хорошо.

изменить: я хочу что-то вроде этого:

выберите данные. *, первый (фактор) более (раздел по группам, порядок по группам, год описания)

or

выберите данные. *, коэффициент (где макс (год))


person Helen    schedule 26.02.2018    source источник
comment
где столбец группы?   -  person isaace    schedule 26.02.2018
comment
Извините, может я неясно сформулировал. То, что вы видите из данных выше, на изображении, является одной группой, скажем, Group=1. Внутри каждой группы я хочу выполнить объясненную операцию   -  person Helen    schedule 26.02.2018


Ответы (1)


То, как я понял ваш вопрос, отличается от результата столбца отношений, который вы предоставляете. Вот пример - возможно, вам нужно скорректировать расчет (на случай, если я вас не понял)

SELECT group
     , year
     , age
     , factor
     , factor / first_value(factor) OVER(PARTITION BY group  ORDER BY year desc) as relationship
  FROM test_r
person MichaelTiefenbacher    schedule 26.02.2018
comment
отлично, я не знал о функции first_value, большое спасибо! Я предполагаю, что могу перевернуть фракцию без каких-либо проблем, так что это решает ее полностью, как я это вижу :) - person Helen; 27.02.2018