我在获得百分比方面遇到了一些麻烦。
colA | cloB | colC
4 | a | y
5 | b | y
7 | a | n
8 | a | y
------------------
Output:
a 67%
b 100%
我必须得到colB中每个字母的colC百分比(所有' y')。
我已经能够得到两个总数,但似乎无法让百分比发挥作用。
得到总数' y' a,b(colB);
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
提前致谢
答案 0 :(得分:6)
使用IF UDF来避免加入
SELECT t1.colB,
SUM( IF( colC == 'y', 1 , 0 ) )/ COUNT(*) * 100 as pct
FROM tbl t1
GROUP BY t1.colB;
答案 1 :(得分:0)
我不是(但是:D)是Hive的专家,但你可以尝试这样的子查询:
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;
Ps:我不是100%肯定,我实际上无法测试它,只是想提供帮助。