如何计算Spark SQL中满足特定条件的总百分比

时间:2015-12-17 08:52:26

标签: sql count apache-spark sum apache-spark-sql

考虑以下数据:

Name | Value
-----|------
A    |  0
A    | 15
A    |  5
B    |  3
B    | 10
B    | 12

我想将其转换为:

Name | Total | With Value >= 10 | Percentage
-----|-------|------------------|-----------
A    | 3     | 1                | 33%
B    | 3     | 2                | 66%

最好在Spark SQL中。

备注:在我的实际案例中,Value是一个数组,我想知道那些非空数组的百分比。

1 个答案:

答案 0 :(得分:1)

Spark SQL只是常规SQL,虽然SQL功能有限,所以你可以编写一个常规查询,如下所示:

SELECT
    NAME
    , COUNT(*) AS Total
    , SUM(CASE WHEN Value >= 10 THEN 1 ELSE 0 END) AS "With Value >= 10"
    , (COUNT(*) * 1.0 /SUM(CASE WHEN Value >= 10 THEN 1 ELSE 0 END)) * 100
FROM <table>
GROUP BY NAME