我正在预先设置一个查询。
我有两列,一列是类别,另一列是数字。
我想按总数来显示数字列,同时将不同类别组合在一起
something like this is what I have in mind
我相当确定如何使用“ with”构造,但是是否可以在同一张表中做到这一点?
答案 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)