【问题标题】:PERCENTILE_CONT() in redshift红移中的 PERCENTILE_CONT()
【发布时间】:2017-09-13 01:31:57
【问题描述】:

我正在触发一个使用 PERCENTILE_CONT() 函数的查询,类似于:

select .....
       PERCENTILE_CONT(0.90) within group (order by END_DATE-START_DATE)
from ....
where .....
;

现在,当我从 Oracle DB 中的 SQLDeveloper 触发它时,这个查询完全可以正常工作,但由于某种原因,我需要使用 RedShift 数据库,当我在其中触发上述查询时,它会抛出如下错误:

ERROR: function percentile_cont(interval, numeric) does not exist
  Hint: No function matches the given name and argument types. You may need to add explicit type casts.`

按照建议,我尝试使用类型转换为 DECIMAL 和 INTEGER 类型,但我遇到了同样的错误。

我已经搜索了文档,但我也无法从那里找到解决方案。 有什么想法,为什么?

P.S:无法放置标签 PERCENTILE_CONT,因为它的声誉较低。

【问题讨论】:

    标签: sql function amazon-redshift typecasting-operator


    【解决方案1】:

    这行得通吗?

       PERCENTILE_CONT(0.90) within group (order by datediff(day, START_DATE, END_DATE)
    

    我猜问题出在日期差异上。

    【讨论】:

    • 我按照您的建议使用了 datediff 函数,但它出现了新错误,然后我使用了另一个版本的 datediff,即 datediff(END_DATE, START_DATE) 但这会引发一个新错误,即 ERROR: syntax “.”处或附近的错误位置:635。通过在每一行随机放置一些错误,我发现错误仅出现在我使用这个 group(order by...) 函数的那一行。完全一无所知。
    【解决方案2】:

    看看这个!

     percentile_cont(0.90) within group 
    ((order by datediff(day, START_DATE, END_DATE)::INT4 desc) over()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-28
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 2016-02-12
      相关资源
      最近更新 更多