Sql 配置单元查询-将值除以组中的值量

Sql 配置单元查询-将值除以组中的值量,sql,group-by,hive,hiveql,Sql,Group By,Hive,Hiveql,我正在尝试创建一个查询,其中我将一个值除以来自该组的结果量,但我找不到关于如何执行该查询的答案 假设我的数据如下: 请求\u id 客户名称 要价 A. 上下快速移动 10 A. 爱丽丝 10 B 上下快速移动 20 B 查理 20 您可以计算按request\u id划分的窗口的平均值: select request_id, client_name, AVG(request_price) over (partition by request_id) / COUNT(re

我正在尝试创建一个查询,其中我将一个值除以来自该组的结果量,但我找不到关于如何执行该查询的答案

假设我的数据如下:

请求\u id 客户名称 要价 A. 上下快速移动 10 A. 爱丽丝 10 B 上下快速移动 20 B 查理 20
您可以计算按
request\u id
划分的窗口的平均值:

select
    request_id,
    client_name,
    AVG(request_price) over (partition by request_id) / COUNT(request_price) over (partition by request_id) as calculated_value
from DATA

您可以首先计算request_id的分组值,然后将数据与主表连接起来

请参阅下文:

  hive> select * from data
    > ;
OK
a   bob 10
a   alice   10
b   bob 20
b   charlie 20
Time taken: 0.082 seconds, Fetched: 4 row(s)

select data.req_id,data.client_name,req_price/cnt as calc_val from data join (select req_id,count(req_id) as cnt from data group by req_id) tmp
on data.req_id=tmp.req_id;

Total MapReduce CPU Time Spent: 3 seconds 580 msec
OK
a   bob 5.0
a   alice   5.0
b   bob 10.0
b   charlie 10.0
Time taken: 46.804 seconds, Fetched: 4 row(s)

也许还有其他方法可以达到同样的效果,但这就是我所能想到的

你能提供一个更好的例子来说明预期的结果吗?当然!对于这个例子,我想得到2行:1。“a”,“鲍勃”,5。2.“a”,“alice”,5@mck当每个客户机有多行时会怎样?你能举个例子吗?@mck用example编辑了这个问题。这不会告诉我我在找什么——它只会计算请求价格的平均值,而不是平均值除以请求价格的金额rows@Yehuda对不起,你能检查一下编辑过的答案吗?谢谢。这是可行的,但我担心的是它的性能成本与运行窗口函数的成本(正如解决方案所建议的那样)。您可以查询和检查性能更好的地方的统计数据。请在评论中分享这两种情况的统计数据