#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
Ожидаемый результат:
Ответ №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’:»