【问题标题】:How do I find percentages of a column using Hive/Presto如何使用 Hive/Presto 查找列的百分比
【发布时间】:2017-11-12 17:39:08
【问题描述】:

假设我有一个看起来像这样的表:

Reason          | Duration
Eating              40
Drinking            60
Everything Else     100

如何获得这样的表格:

Reason          | Duration | Duration Percent
Eating              40             20
Drinking            60             30
Everything Else     100            50

【问题讨论】:

    标签: hive presto


    【解决方案1】:

    您可以使用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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2021-11-12
      • 2013-11-26
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多