计算配置单元中的百分比

5tmbdcev  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(412)

我在获取百分比方面有点困难。

colA | cloB | colC
4    |  a   |  y
5    |  b   |  y
7    |  a   |  n
8    |  a   |  y
------------------
Output:
a 67%
b 100%

我必须得到colb中每个字母的colc百分比(所有的y)。
我已经能够分别得到这两个总数,但似乎不能得到工作的百分比。
获取a,b(colb)的总“y”;

SELECT colB, COUNT(*) FROM tbl WHERE colC = '"y"' GROUP BY colB;
Output:
a   2
b   1

获取colb的总数

SELECT COUNT(colC) FROM tbl WHERE colC = '"y"';
Output:
4

提前谢谢

0dxa2lsx

0dxa2lsx1#

我(尚未:d)是hive方面的Maven,但您可以尝试这样的子查询:

SELECT 
    t1.colB,
    100*(count(colB)/sub.cnt)
FROM 
    tbl t1,
    (SELECT COUNT(colC) as cnt 
     FROM tbl 
     WHERE colC = 'y') sub
JOIN 
    tbl ON (sub.colC = tbl.colC))
GROUP BY 
    colB;

附言:我不是100%肯定,实际上我也不能测试,只是想帮忙。

8cdiaqws

8cdiaqws2#

使用if-udf避免连接

SELECT t1.colB,
   SUM( IF( colC == 'y', 1 , 0 ) )/ COUNT(*) * 100 as pct
FROM tbl t1
GROUP BY t1.colB;

相关问题