presto - 有没有办法将一列除以列总数?
问题描述
我正在设置一个查询。
我有两列——一列是类别,另一列是数字。
我想通过总数来设置数字列,同时将不同的类别组合在一起
我很确定如何使用“with”构造来做到这一点,但是有没有办法在同一张表中做到这一点?
解决方案
您可以为此目的使用窗口函数:
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)
推荐阅读
- vba - 用超链接替换 Word 文件中所有出现的字符串
- c++ - c++中的时间线程
- c - 如何在 C 程序中运行程序并与之交互
- c++ - 为什么 ZwUnmapViewOfSection() 在给定 PE 基地址作为参数时会取消映射整个进程的内存?
- javascript - JavaScript 代码在函数之外执行两次
- access-token - 如何撤销 Identity Server 3 中的持久引用令牌
- html - 向 mat-chip 添加水平滚动条
- php - 为什么我在 PHP 中使用 strlen() 函数得到相同字符串的两个不同输出?
- android - Kotlin 启动协程跳过了 Google Volley 从服务器检索信息的代码行
- python - Tensorflow:tf.contrib 弃用