我的表列在 Snowflake 数据库中有嵌套数组。我想使用 SQL (Snowflake SQL) 执行一些聚合。
我的表名是:DATA
PROJ 列是 VARIANT 数据类型。嵌套数组并不总是 3,我在 DATA 表中对此进行了演示。
| ID | PROJ | LOCATION |
|----|-------------------------------|----------|
| 1 |[[0, 4], [1, 30], [10, 20]] | S |
| 2 |[[0, 2], [1, 20]] | S |
| 3 |[[0, 8], [1, 10], [10, 100]] | S |
Desired Output:
| Index | LOCATION | Min | Max | Mean|
|-------|----------|------|-----|-----|
| 0 | S | 2 | 8 | 4.66|
| 1 | S | 10 | 30 | 20 |
| 10 | S | 20 | 100| 60 |
最佳答案
首先将嵌套数组展平,然后Index是子数组的第一个元素,Value是第二个元素(数组从0开始):
CREATE OR REPLACE TABLE DATA
AS
SELECT 1 AS ID, [[0, 4], [1, 30], [10, 20]] AS PROJ UNION
SELECT 2 AS ID, [[0, 2], [1, 20]] AS PROJ UNION
SELECT 3 AS ID, [[0, 8], [1, 10], [10, 100]] AS PROJ;
查询:
SELECT s.VALUE[0]::INT AS Index,
MIN(s.VALUE[1]::INT) AS MinValue,
MAX(s.VALUE[1]::INT) AS MaxValue,
AVG(s.VALUE[1]::INT) AS MeanValue
FROM DATA
,LATERAL FLATTEN(input=> PROJ) s
GROUP BY s.VALUE[0]::INT
ORDER BY Index;
输出:
关于sql - 展平嵌套数组并在雪花中聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72872414/