我很难将这两个功能组合到一个查询中,例如:
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 in an aggregate function
AVG()既可以聚合(需要按某列分组)又可以是窗口函数(需要frame子句)。出现错误是因为您PERCENTILE已经使用了窗口函数,并且AVG函数不明显,但没有框架子句。要AVG在同一查询中使用,您需要模拟如下子句
AVG(num_hours) OVER ()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
978 次 |
| 最近记录: |