如何使用 Hive/Presto 查找列的百分比
How do I find percentages of a column using Hive/Presto
假设我有一个 table 看起来像:
Reason | Duration
Eating 40
Drinking 60
Everything Else 100
如何获得这样的 table:
Reason | Duration | Duration Percent
Eating 40 20
Drinking 60 30
Everything Else 100 50
您可以使用 window function 来计算总数:
SELECT reason, duration, (duration * 100.0) / sum(duration) OVER () pct
FROM (
VALUES
('eating', 40),
('drinking', 60),
('other', 100)
) AS t (reason, duration)
请注意 Presto(根据 SQL 标准)执行整数除法,因此有必要将其中一个值转换为双精度或小数(否则结果将为零)。
reason | duration | pct
----------+----------+------
eating | 40 | 20.0
drinking | 60 | 30.0
other | 100 | 50.0
(3 rows)
假设我有一个 table 看起来像:
Reason | Duration
Eating 40
Drinking 60
Everything Else 100
如何获得这样的 table:
Reason | Duration | Duration Percent
Eating 40 20
Drinking 60 30
Everything Else 100 50
您可以使用 window function 来计算总数:
SELECT reason, duration, (duration * 100.0) / sum(duration) OVER () pct
FROM (
VALUES
('eating', 40),
('drinking', 60),
('other', 100)
) AS t (reason, duration)
请注意 Presto(根据 SQL 标准)执行整数除法,因此有必要将其中一个值转换为双精度或小数(否则结果将为零)。
reason | duration | pct
----------+----------+------
eating | 40 | 20.0
drinking | 60 | 30.0
other | 100 | 50.0
(3 rows)