【发布时间】:2021-07-15 03:55:00
【问题描述】:
给定一个像这样的表
Key | Value
----------------+-------------
A | 1
A | 2
B | 1
B | 2
C | 1
C | 2
如何使用SQL 生成所有(keys, value) 的乘积?
这是所需的输出:
Group | Key | Value
---------+--------------+----
1 |A | 1
1 |B | 1
1 |C | 1
2 |A | 1
2 |B | 1
2 |C | 2
3 |A | 1
3 |B | 2
3 |C | 1
4 |A | 1
4 |B | 2
4 |C | 2
5 |A | 2
5 |B | 2
5 |C | 2
6 |A | 2
6 |B | 1
6 |C | 2
7 |A | 2
7 |B | 2
7 |C | 1
8 |A | 2
8 |B | 1
8 |C | 1
为了说明目的,我可以在Python 中这样做,使用:
In [1]: from itertools import product
In [2]: list(product([('A',1), ('A', 2)], [('B', 1), ('B', 2)], [('C', 1), ('C', 2)]))
Out[2]:
[(('A', 1), ('B', 1), ('C', 1)),
(('A', 1), ('B', 1), ('C', 2)),
(('A', 1), ('B', 2), ('C', 1)),
(('A', 1), ('B', 2), ('C', 2)),
(('A', 2), ('B', 1), ('C', 1)),
(('A', 2), ('B', 1), ('C', 2)),
(('A', 2), ('B', 2), ('C', 1)),
(('A', 2), ('B', 2), ('C', 2))]
在我的实际应用程序中,(key, value) 对的数量并没有提前固定。
【问题讨论】:
-
您使用的是哪个版本的 Presto?键的数量是固定的吗?
-
Trino 版本 340(2020 年 8 月 8 日)。而且key的个数不固定,每个key的value个数固定为10个。
标签: sql presto cartesian-product trino