簡體   English   中英

Hive 查詢 - 將值除以組中值的數量

[英]Hive query - divide value by the amount of values in the group

我正在嘗試創建一個查詢,在該查詢中,我將其中一個值划分為該組的結果數量,但我找不到有關如何執行它的答案。

假設我的數據如下:

request_id 客戶名稱 請求價格
一個 鮑勃 10
一個 愛麗絲 10
b 鮑勃 20
b 查理 20

我想獲得一個查詢,該查詢將為每組 client_name 和請求返回一個結果,但 request_price 是 request_price / 每個請求的客戶端數量。 類似的東西 -

select request_id, client_name, AVG(request_price) / <SIZE_OF_GROUP> from DATA group by request_id

結果應該是 -

request_id 客戶名稱 計算值
一個 鮑勃 5
一個 愛麗絲 5
b 鮑勃 10
b 查理 10

有人可以幫忙嗎? 有沒有辦法在一個查詢中做到這一點?

您可以計算按request_id分區的 window 的平均值:

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)

可能有其他方法可以實現相同的目標,但這是我能想到的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM