你能解释为什么以下有效:
select recdate,avg(logtime)
over
(ORDER BY recdate rows between 10 preceding and 0 following) as logtime
from v_download_times;
以下不是
select recdate,median(logtime)
over
(ORDER BY recdate rows between 10 preceding and 0 following) as logtime
from v_download_times;
(中位数而不是平均值)
我收到 ORA-30487 错误。
我将很感激解决方法。
答案 0 :(得分:2)
错误消息为ORA-30487: ORDER BY not allowed here
。当然,如果我们咨询documentation for the MEDIAN function它说:
“您可以使用MEDIAN作为分析函数。您只能指定 query_partition_clause在其OVER子句中。“
答案 1 :(得分:1)
但是,如果您只想从当前行之前的一定数量的行中提取它,那不是多余的。 一种解决方法可能是仅出于中位数目的限制您的数据集,例如
select
median(field) over (partition by field2)
from ( select * from dataset
where period_back between 0 and 2 )
答案 2 :(得分:0)
MEDIAN不允许使用ORDER BY子句。正如APC在答案中指出的那样,documentation告诉我们,我们只能指定query_partition_clause。
ORDER BY是多余的,因为我们正在寻找中心值 - 无论顺序如何都是一样的。