在 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
EXPERTE
gefragt vor 5 Monaten42 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen