如何计算Spark中满足特定条件的总数的百分比SQL
How to calculate the percentage of total that meet a certain condition in 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 是一个数组,我想知道具有非空数组的百分比。
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
考虑以下数据:
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 是一个数组,我想知道具有非空数组的百分比。
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