使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

在 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
专家
已提问 1 年前62 查看次数
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
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则