有没有一种方法可以将列除以总列数?

时间:2019-04-15 15:55:46

标签: presto

我正在预先设置一个查询。

我有两列,一列是类别,另一列是数字。

我想按总数来显示数字列,同时将不同类别组合在一起

something like this is what I have in mind

我相当确定如何使用“ with”构造,但是是否可以在同一张表中做到这一点?

1 个答案:

答案 0 :(得分:4)

您可以为此使用window functions

WITH data (category, number) AS (
    VALUES
        ('A', 1),
        ('A', 2),
        ('A', 3),
        ('B', 4),
        ('B', 5),
        ('B', 6)
)
SELECT category, number * 1e0 / sum(number) OVER (PARTITION BY category)
FROM data

产生:

 category |        _col1
----------+---------------------
 A        | 0.16666666666666666
 A        |  0.3333333333333333
 A        |                 0.5
 B        | 0.26666666666666666
 B        |  0.3333333333333333
 B        |                 0.4
(6 rows)