#sql #hive #max #hiveql #sql-view
#sql #улей #макс #hiveql #sql-просмотр
Вопрос:
У меня есть таблица AAA с 5 столбцами, скажем, A, B, C, D, E. Я хочу добавить столбец F в AAA, чтобы все строки F содержали максимальное значение E. Пример :
ТАБЛИЦА AAA
A|B|C|D|E
__________
1|2|3|4|5
2|3|4|5|6
3|4|5|6|7
Добавьте столбец F в AAA. Итоговая таблица должна иметь что-то вроде этого.
A|B|C|D|E|F
___________
1|2|3|4|5|7
2|3|4|5|6|7
3|4|5|6|7|7
Ответ №1:
Вы можете использовать оконные функции:
select t.*, max(e) over() as f
from aaa t
Я бы не рекомендовал хранить эту производную информацию, потому что ее сложно поддерживать (всякий e
раз, когда значение изменяется в какой-либо строке, вам может потребоваться пересчитать столбец while f
).
Альтернативой может быть создание представления:
create view v_aaa as
select t.*, max(e) over() as f
from aaa t
Комментарии:
1. На самом деле столбцы в таблице AAA имеют несколько типов данных. Таким образом, невозможно будет получить наибольшее значение. В столбце E есть поле даты, и я хочу, чтобы максимальное значение этого поля даты было равно значениям столбца F.