【发布时间】:2020-11-18 08:58:39
【问题描述】:
我是 Athena 的新手,我正在尝试了解如何将多列从长格式转换为宽格式。似乎需要presto,但我只能成功地将map_agg 应用于一个变量。我认为我下面的最终结果可以通过multimap_agg 实现,但不能完全发挥作用。
下面我将介绍我的步骤和数据。如果您有什么建议或问题,请告诉我!
首先,数据是这样开始的:
id | letter | number | value
------------------------------------
123 | a | 1 | 62
123 | a | 2 | 38
123 | a | 3 | 44
123 | b | 1 | 74
123 | b | 2 | 91
123 | b | 3 | 97
123 | c | 1 | 38
123 | c | 2 | 98
123 | c | 3 | 22
456 | a | 1 | 99
456 | a | 2 | 33
456 | a | 3 | 81
456 | b | 1 | 34
456 | b | 2 | 79
456 | b | 3 | 43
456 | c | 1 | 86
456 | c | 2 | 60
456 | c | 3 | 59
然后我使用 where 子句和 joining 过滤将数据转换为以下内容:
id | letter | 1 | 2 | 3
----------------------------
123 | a | 62 | 38 | 44
123 | b | 74 | 91 | 97
123 | c | 38 | 98 | 22
456 | a | 99 | 33 | 81
456 | b | 34 | 79 | 43
456 | c | 86 | 60 | 59
对于最终的结果,我想将其转换为以下内容:
id | a_1 | a_2 | a_3 | b_1 | b_2 | b_3 | c_1 | c_2 | c_3
--------------------------------------------------------------------------
123 | 62 | 38 | 44 | 74 | 91 | 97 | 38 | 98 | 22
456 | 99 | 33 | 81 | 34 | 79 | 43 | 86 | 60 | 59
【问题讨论】:
标签: sql pivot window-functions presto amazon-athena