我试图找到每小时所有值的95%,并在每天的水平上显示它们。下面是我正在编写的代码片段:
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百分位数。
发布于 2016-04-26 02:31:42
这只是一个想法,但是您是否尝试过将PARAMETER_VALUE转换为ORDER by表达式可以接受的数据类型之一(整数、浮点数、间隔或数值)?
例如,您可以在组内尝试(按PARAMETER_VALUE::FLOAT排序)。
发布于 2016-06-08 08:08:01
您需要在子查询(百分位数)的顶部添加一个聚合查询。max/min (因为在每个范围内百分位数都相同) percentile_disc是一个分析函数,但不是聚合函数
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, hourhttps://stackoverflow.com/questions/36751298
复制相似问题