在hive查询中计算%

时间:2012-10-23 12:35:03

标签: hive hiveql

通过以下查询,我可以每天为每个客户获得批准的交易。

select 
    q1.client_id, 
    q1.receive_day, 
    count(q1.client_id) as cnt 
from 
    (select * from sale where response=00) q1 
group by 
    q1.client_id, q1.receive_day

我想获得批准%,即approval_per,是100 *(count(client_id)/响应),而count(client_id)是批准的交易的客户数。

响应是整个响应的计数,包括所有值(已批准和未批准)。我可以通过select count(response) from sale获得响应,但如何在此处计算同一查询中的%是我现在面临的问题。我尝试了一些选项,因为它不起作用,达到了用户组。

所以我的预期输出格式是client_id,receive_day,count(client_id),approval_per。

非常感谢您的任何帮助

谢谢&的问候,

DTI

1 个答案:

答案 0 :(得分:0)

您可以简单地添加另一个计算该计数的子查询。此外,对于您现在的查询,似乎没有必要使用该子查询(q1)。

我还假设您希望您的百分比应该是每个客户负责的交易百分比。即给定客户的交易数除以总交易数。

SELECT 
    s.client_id, 
    s.receive_day, 
    count(s.client_id) as cnt,
    100 * (count(s.client_id) / q1.total)  
FROM 
    sale s,
    (select count(*) total from sale) q1
WHERE
    response = 00
GROUP BY 
    s.client_id, s.receive_day