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)
提前致谢
使用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)