Примените коэффициент преобразования в столбце для агрегированной таблицы и выполните расчет с другой агрегированной таблицей. - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть следующие таблицы в Hive.Можно ли выполнить все эти операции одним запросом?В таблицах выполняются следующие операции:

В таблице 1 сумма пользователей на основе столбца 'center'
В таблице 2:

  1. Каждый код центра (A1) связан с разнымисчета.
  2. Коэффициент пересчета, применяемый к столбцу Расходы (должен быть в рупиях)
  3. Затем найдите сумму расходов

Выходная информация должна быть Result=sum[Expense in Rupees]/sum[Users#]

Sample format of tables and expected output is provided as link below

Любые указания приветствуются.

1 Ответ

0 голосов
/ 29 декабря 2018

Было бы действительно легко понять, если бы вы также указали выходные значения.На ваш вопрос: да, вы можете добиться конверсии в одном запросе, используя CASE

SELECT
  center,
  account,
  SUM(expenses)/SUM(users) AS result
FROM
 (
  SELECT
    t2.center AS center,
    t1.users AS users,
    CASE
     WHEN t2.currency = 'USD' THEN (t2.expenses*70)
     WHEN t2.currency = 'MYR' THEN (t2.expenses*17)
     WHEN t2.currency = 'AUD' THEN (t2.expenses*50)
     WHEN t2.currency = 'INR' THEN t2.expenses
     ELSE 'invalid'
    END AS expenses,
    t2.currency AS currency,
    t2.account AS account
  FROM
  table1 t1 
  JOIN 
  table2 t2 
  ON(t1.center=t2.center)
 ) joined_data
GROUP BY center,account
ORDER BY center,account

Я не проверял это, но он должен работать.В худшем случае это может привести к незначительной синтаксической ошибке, о которой вы должны позаботиться.:)

...