计算蜂巢中的百分比

use*_*361 2 hadoop percentage hiveql

我在获得百分比方面遇到了一些麻烦.

colA | cloB | colC
4    |  a   |  y
5    |  b   |  y
7    |  a   |  n
8    |  a   |  y
------------------
Output:
a 67%
b 100%
Run Code Online (Sandbox Code Playgroud)

我必须得到colB中每个字母的colC百分比(所有'y').

我已经能够得到两个总数,但似乎无法让百分比发挥作用.
获取a,b(colB)的总'y';

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

获取colB的总计总计

SELECT COUNT(colC) FROM tbl WHERE colC = '"y"';
Output:
4
Run Code Online (Sandbox Code Playgroud)

提前致谢

Jer*_*nks 6

使用IF UDF来避免连接

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