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 中使用)