在 Vertica 中创建 percentile_cont 作为聚合函数

Posted

技术标签:

【中文标题】在 Vertica 中创建 percentile_cont 作为聚合函数【英文标题】:Creating percentile_cont as aggregate function in Vertica 【发布时间】:2017-04-09 18:04:40 【问题描述】:

我需要 Vertica 中的 percentile_cont() 聚合函数。但是,这个数据库中只有它的分析功能。

是否可以使用存储过程或其他方式创建一个?非常感谢任何构建它的建议和步骤。

理想情况下,它应该像 link 中所示的 Oracle 的聚合 percentile_cont() 一样工作。

谢谢。

【问题讨论】:

【参考方案1】:

如果您想内联视图或使用with,您仍然可以使用分析函数。只要分组与您的分区相同,该组级别的 pc_value 将始终相同(如,安全分组)。

select g1, g2, pc_value, sum(value) sum_value
from ( 
    select g1, g2, value, PERCENTILE_CONT(.5) WITHIN GROUP(ORDER BY value) 
    OVER (PARTITION BY g1, g2)
) x
group by g1, g2, pc_value

您可以尝试创建一个 UDX(尽管由于语言结构的原因,它看起来并不完全像这样,所以您可能会创建一个带有两个参数的函数)......但我真的不这么认为'会表现得更好,这不是太难以理解。

【讨论】:

以上是关于在 Vertica 中创建 percentile_cont 作为聚合函数的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Sqoop 将数据从 Vertica 导入 Cassandra

如何在 postgreSQL 中创建 generate_series 函数?

Vertica的这些事(十六)——Vertica如何建表

是否可以在 Python 中创建抽象类?

如何在 python 的多处理中创建嵌套共享对象?

在 BigQuery 中创建 UDF