首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HP Vertica中每天95%的每小时数据

HP Vertica中每天95%的每小时数据
EN

Stack Overflow用户
提问于 2016-04-21 01:41:01
回答 2查看 620关注 0票数 0

我试图找到每小时所有值的95%,并在每天的水平上显示它们。下面是我正在编写的代码片段:

代码语言:javascript
运行
复制
select distinct columnA
,date(COLLECTDATETIME) as date_stamp
,hour(COLLECTDATETIME) as hour_stamp
,PERCENTILE_DISC(0.95) WITHIN GROUP(order by PARAMETER_VALUE)
over (PARTITION BY hour(COLLECTDATETIME)) as max_per_day
from TableA
where 
columnA = 'abc'
and PARAMETER_NAME = 'XYZ';

现在,结果集为我提供了每天每小时相同的值,但它不是每天给定小时的95百分位数。

EN

回答 2

Stack Overflow用户

发布于 2016-04-26 02:31:42

这只是一个想法,但是您是否尝试过将PARAMETER_VALUE转换为ORDER by表达式可以接受的数据类型之一(整数、浮点数、间隔或数值)?

例如,您可以在组内尝试(按PARAMETER_VALUE::FLOAT排序)。

票数 0
EN

Stack Overflow用户

发布于 2016-06-08 08:08:01

您需要在子查询(百分位数)的顶部添加一个聚合查询。max/min (因为在每个范围内百分位数都相同) percentile_disc是一个分析函数,但不是聚合函数

代码语言:javascript
运行
复制
SELECT dateid,
       hour,
       MAX(max_per_day) as max_per_day
FROM (
      SELECT date(COLLECTDATETIME) AS dateid,
             hour(COLLECTDATETIME) AS hour,
             percentile_disc(0.95) WITHIN GROUP(order by PARAMETER_VALUE) OVER (PARTITION BY date(COLLECTDATETIME), hour(COLLECTDATETIME)) as max_per_day
      WHERE ......

     )
GROUP BY dateid, hour
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36751298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档