Impala 使用窗口函数的总计列

问题描述 投票:0回答:2

我正在寻找一种方法来在 Impala 的所有组中创建“总计”列。

使用窗口函数很容易获得分区组的总数,如下所示:

sum(x) over(按 A 划分)

但是似乎没有一个表达式可以按“all”进行分区。这是 Impala 的缺点吗?看起来在 postgress 中你可以将 over 语句留空。

window-functions impala
2个回答
0
投票

分区子句是可选的。您可以编写这样的查询:

select sum(x) over () from t;

例如:

[localhost:21000] > select id, sum(id) over () from tbl;
+----+-------------------+
| id | sum(id) OVER(...) |
+----+-------------------+
| 0  | 28                |
| 1  | 28                |
| 2  | 28                |
| 3  | 28                |
| 6  | 28                |
| 7  | 28                |
| 4  | 28                |
| 5  | 28                |
+----+-------------------+
Fetched 8 row(s) in 0.08s

0
投票

如果空分区子句不起作用,请尝试按硬编码值分区。与聚合sql不同,不需要注释掉其他列

选择 count(1) over (按 1 分区) AS count_all, q.* from q

© www.soinside.com 2019 - 2024. All rights reserved.