我很难将这两个功能组合到一个查询中,例如:
WITH time_values AS (
SELECT
(end_time - start_time) * 1.0 / 3600000000 AS num_hours
FROM table
WHERE
end_time >= 1493596800000000
AND start_time < 1493683200000000
)
SELECT
PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY num_hours) OVER() AS p25,
PERCENTILE_DISC(0.50) WITHIN GROUP (ORDER BY num_hours) OVER() AS p50,
PERCENTILE_DISC(0.80) WITHIN GROUP (ORDER BY num_hours) OVER() AS p80,
PERCENTILE_DISC(0.99) WITHIN GROUP (ORDER BY num_hours) OVER() AS p99,
AVG(num_hours)
FROM time_values;
Run Code Online (Sandbox Code Playgroud)
这返回 ERROR: column "time_values.num_hours" must appear in the GROUP BY clause or be used …
在PostgreSQL中获取日期范围显示了如何在PostgreSQL中获取日期范围。但是,Redshift不支持generate_series():
ans=> select (generate_series('2012-06-29', '2012-07-03', '1 day'::interval))::date;
ERROR: function generate_series("unknown", "unknown", interval) does not exist
HINT: No function matches the given name and argument types. You may need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)
有没有办法复制generate_series()Redshift中的内容?