在 Athena SQL 中如何进行数据透视?

0

【以下的问题经过翻译处理】 我正在尝试在SQL中旋转表格,但我不知道如何操作。我有三列:日期、开业时间和关闭时间。有时一天会有两次开业时间。例如: 日期 开业时间 关闭时间 星期一 09.00 12.00 星期一 13.00 17.00

现在我想以列的方式旋转表格,使列名代表日期,行提供有关开业时间的具体信息。例如: 星期一 星期二 星期三 09.00 - 12.00 09.00 - 12.00 12.00 - 17.00 13.00 - 16.00!输入图像描述

我已经添加了一张数据图片。

profile picture
專家
已提問 5 個月前檢視次數 42 次
1 個回答
0

【以下的回答经过翻译处理】 Amazon Athena使用Presto SQL,它没有本地PIVOT函数。然而,您仍然可以使用条件聚合来达到期望的结果。以下是一个示例查询,基于给定的数据结构来旋转您的表:

SELECT
  MAX(CASE WHEN day = 'monday' THEN CONCAT(openinghour, ' - ', closinghour) END) AS monday,
  MAX(CASE WHEN day = 'tuesday' THEN CONCAT(openinghour, ' - ', closinghour) END) AS tuesday,
  MAX(CASE WHEN day = 'wednesday' THEN CONCAT(openinghour, ' - ', closinghour) END) AS wednesday
FROM
  (SELECT day, openinghour, closinghour, ROW_NUMBER() OVER (PARTITION BY day ORDER BY openinghour) AS row_num
   FROM your_table) subquery
GROUP BY row_num;


将your_table替换为Athena中实际的表名。

此查询首先使用ROW_NUMBER()函数对每一天的行进行编号,然后使用MAX和CASE表达式基于row_num列聚合行来旋转表格。输出将显示每一天的开放和关闭时间于单独的列中。

profile picture
專家
已回答 5 個月前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南