Как изменить скорость UAD на скорость CAD в таблице hive

#hive #conditional-statements #calculator

#улей #условные операторы #калькулятор

Вопрос:

У меня есть таблица hive, и скорость таблицы основана на UAD. Я хочу рассчитать курс на основе CAD доллара

Выберите (выберите rate из rate, где currency_code = ‘CAD’) как c_rate , c_rate/r.rate из rate r

Выберите (выберите rate из rate, где currency_code = ‘CAD’) как c_rate , c_rate/r.rate из rate r

Фактический результат: не удается распознать ввод рядом с ‘(‘ ‘выбрать’ ‘скорость’ в спецификации выражения (состояние = 42000, код = 4000

Ожидаемый результат:

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

Ответ №1:

Это можно сделать с помощью условной агрегации с использованием max функции window.

 select t.*,max(case when currency_code = 'CAD' then UAD_RATE end) over()/uad_rate
from tbl t
 

Комментарии:

1. Привет, у меня есть другие табличные вызовы CAD_rate table, которые имеют те же столбцы, что и в таблице rate, и мне нужно сравнить значение rate из этих двух таблиц Выберите count(*) из rate r присоедините CAD_Rate c к r.currency_code=c.currency_code где round ((max (случай, когда w.currency_code = ‘CAD’, затем w.rate end) over() / w.rate) ,8) = c.rate Я получаю максимальное сообщение об ошибке «Недопустимая ссылка на столбец ‘max’:»