如何根据列的值复制同一行X次?

问题描述 投票:0回答:1

我有一个数据集,如下所示:

链接号 胡班德 时间 平均速度 样品_编号
链接1 8 8:00 52 2
链接1 8 8:30 55 5
链接2 9 9:00 20 3
链接2 9 9:30 40 4

我需要将每一行复制 X 次,X = Sample_Number。所以我的结果将如下所示:

链接号 胡班德 时间 平均速度 样品_编号
链接1 8 8:00 52 2
链接1 8 8:00 52 2
链接1 8 8:30 55 5
链接1 8 8:30 55 5
链接1 8 8:30 55 5
链接1 8 8:30 55 5
链接1 8 8:30 55 5
链接2 9 9:00 20 3
链接2 9 9:00 20 3
链接2 9 9:00 20 3
链接2 9 9:30 40 4
链接2 9 9:30 40 4
链接2 9 9:30 40 4
链接2 9 9:30 40 4

这样我就可以计算每个链路在每个小时带内的速度百分位。

我已经能够使用generate_series在Postgresql中做到这一点:

select Link_number, Hourband, percentile_cont(0.85) within group (order by Mean_Speed) as Speed_85th
from table, generate_series(1,Sample_Number)

我如何在 Amazon Athena 中执行同样的操作?

sql amazon-web-services amazon-athena generate-series
1个回答
0
投票

正如@Serg建议的那样,您可以使用统计表生成数字序列,然后使用交叉联接根据这些值复制行。

WITH numbers AS (
    SELECT n
    FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10)) AS t(n)
)

SELECT 
    Link_number,
    Houband,
    Time,
    Mean_speed,
    Sample_Number
FROM 
    your_table AS t
JOIN 
    numbers AS n
ON 
    n.n <= t.Sample_Number
© www.soinside.com 2019 - 2024. All rights reserved.