我有一个巨大的数据集位于Amazon Redshift服务器中,我需要对数据集进行一些排序和标记(附加示例数据集以供参考)。我需要完成两个任务:
S_Number
和days_difference
的升序对数据进行排序标记-需要创建一个名为flag
的新列,它应该执行以下步骤:
S_Number = row -1: S_Number then row -1: Flag +1 else 1
。我正在使用Alteryx提取数据,但仍然使用SQL查询来完成任务。任何帮助都将真正有用。
我已经给出了指向示例输入文件以及预期输出的链接。让我知道我的问题不清楚。
答案 0 :(得分:1)
如果我理解正确,则希望对结果进行排序并添加按S_Number
分组的每一行的位置。如果是这样,则在SQL和Redshift中称为“窗口函数” ,您可以获得与以下查询共享的结果。请注意,我没有运行查询,因此它可能有一个小的语法错误(希望不是)。
SELECT timestamp, S_Number, days_difference, ROW_NUMBER () OVER
(PARTITION BY S_Number ORDER BY timestamp ASC) AS Flag
FROM your_table
ORDER BY S_Number ASC, timestamp ASC