amazon-redshift - 您可以在单个 Redshift 查询中同时使用 AVG() 和 PERCENTILE_DISC() 函数吗?

标签 amazon-redshift

我很难将这两个函数组合到一个查询中,例如:

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;

这将返回错误:列“time_values.num_hours”必须出现在 GROUP BY 子句中或用于聚合函数

最佳答案

AVG() 可以是聚合(需要按某些列分组)和窗口函数(需要 frame 子句)。出现该错误是因为您已经使用了一个窗口函数 PERCENTILE 并且没有用于 AVG 函数的框架子句,尽管它并不明显。要在同一查询中使用 AVG,您需要模拟看起来像这样的子句

AVG(num_hours) OVER ()

关于amazon-redshift - 您可以在单个 Redshift 查询中同时使用 AVG() 和 PERCENTILE_DISC() 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44682256/

相关文章:

amazon-web-services - 使用 PySpark 将数据上传到 Redshift

sql - 使用 RedShift CURSOR 插入和迭代

sql - 在 Redshift 中执行 WHERE IN 或 INNER JOIN 更快吗

amazon-s3 - 无法将 json - Dynamo db Streams 复制到 redshift

stored-procedures - 无法在 Redshift Aginity 和 aginity pro 中创建存储过程

amazon-redshift - 由于内部错误,不支持 Redshift 这种类型的相关子查询模式

postgresql - 如何使 Microstrategy 与 Redshift/psql 表中的用户模式一起工作?

amazon-web-services - AWS Kinesis 连接器库

postgresql - 允许您在 SELECT 语句中引用别名列的 PostgreSQL 函数叫什么?

sql - 添加第二个连接条件以指数方式增加查询时间