在聚合表的列中应用转换因子,并使用另一个聚合表执行计算

zqdjd7g9  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(252)

我在 hive 里有下面的table。是否可以通过单个查询完成所有这些操作?在表中执行以下操作:
在表1中,基于“中心”列的用户总数
在表2中:
每个中心代码(a1)与不同的帐户相关联。
用于费用栏的换算系数(应以卢比为单位)
然后找出费用的总和
输出应为 Result=sum[Expense in Rupees]/sum[Users#]
任何形式的指导都是值得赞赏的。

tktrz96b

tktrz96b1#

如果您也指定了输出值,那么就很容易理解了。对于您的问题,是的,您可以使用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

我没有测试这个,但它应该工作。在最坏的情况下,它可能会抛出一个小的语法错误,您应该能够处理它。:)

相关问题