Amazon Athena (Presto) SELECT 创建 (n^2 + n)/2(第一个三角数)的语句
Amazon Athena (Presto) SELECT statement to create (n^2 + n)/2 (th triangular number)
我正在使用 Athena 并试图找到一种方法来创建一个 select 语句,该语句将 return 以下格式的序列:
Numer
1
2
2
3
3
3
4
4
4
4
以此类推,最多200个。
有可能吗?
运行:
SELECT numbers FROM (
SELECT * FROM (
VALUES flatten(
transform(
sequence(1, 4),
x -> repeat(x, cast(x AS INT))
)
)
) AS x (a) CROSS JOIN UNNEST(a) AS t (numbers)
);
它将 return:
numbers
---------
1
2
2
3
3
3
4
4
4
4
(10 rows)
合并sequence()
with UNNEST
:
SELECT n FROM UNNEST(sequence(1, 5)) t(n)
CROSS JOIN UNNEST(sequence(1, n)) x(y);
presto:default> SELECT n
-> FROM UNNEST(sequence(1, 5)) t(n)
-> CROSS JOIN UNNEST(sequence(1, n)) x(y);
n
---
1
2
2
3
3
3
4
4
4
4
5
5
5
5
5
(15 rows)
(已在 Presto 326 中测试,但也可在 Athena 中使用)
我正在使用 Athena 并试图找到一种方法来创建一个 select 语句,该语句将 return 以下格式的序列:
Numer
1
2
2
3
3
3
4
4
4
4
以此类推,最多200个。 有可能吗?
运行:
SELECT numbers FROM (
SELECT * FROM (
VALUES flatten(
transform(
sequence(1, 4),
x -> repeat(x, cast(x AS INT))
)
)
) AS x (a) CROSS JOIN UNNEST(a) AS t (numbers)
);
它将 return:
numbers
---------
1
2
2
3
3
3
4
4
4
4
(10 rows)
合并sequence()
with UNNEST
:
SELECT n FROM UNNEST(sequence(1, 5)) t(n)
CROSS JOIN UNNEST(sequence(1, n)) x(y);
presto:default> SELECT n
-> FROM UNNEST(sequence(1, 5)) t(n)
-> CROSS JOIN UNNEST(sequence(1, n)) x(y);
n
---
1
2
2
3
3
3
4
4
4
4
5
5
5
5
5
(15 rows)
(已在 Presto 326 中测试,但也可在 Athena 中使用)