分组列配置单元上的sql操作

gab6jxml  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(650)

在一个Hive表中,我有他们的实际销售额和预测。所以数据看起来像:

item   date  salesDol   salesUnit   predictionU
1    1/1/2016  5.99      1            0.9
1    1/1/2016  5.49      1            0.9
1    2/1/2016  5.99      1            0.84
1    3/1/2016  6.04      1            0.92

为了计算平均价格,我做了:

create table data1 as 
select item, date, predictionU from data
JOIN
(select sum(salesDol) as totDol, sum(salesUnit) as totUnit from data);

所以在我的每一排 totDol 以及 totUnit . 现在,为了得到最终推断的销售单位,我尝试:

create table data2 as 
    select item, date, sum(predictionU)*totDol/totUnit from data1 group by item, date;

然后我得到一个错误,说:
失败:semanticexception[error 10025]:表达式不在group by键“totdol”中
我不明白为什么Hive要我包括 totDol 也在GROUPBY子句中。任何建议。

smdncfj3

smdncfj31#

只需使用窗口功能:

select item, date, predictionU,
       sum(salesDol) over () as totDol,
       sum(salesUnit) over () as totUnit
from data;

然后可以在最终查询中包含以下内容:

select item, date, predictionU,
       sum(salesDol) over () as totDol,
       sum(salesUnit) over () as totUnit,
       (preditionU * sum(salesDol) over () / sum(salesUnit) over ())
from data;

相关问题