我有一个问题的功能,我需要分组的两列,并采取平均另一个。
为什么下面的不起作用?
CREATE OR REPLACE FUNCTION core.cal_average_load(
cell_load DOUBLE PRECISION,
id DOUBLE PRECISION,
s_id DOUBLE PRECISION
) RETURNS DOUBLE PRECISION
LANGUAGE plpgsql
AS $$
DECLARE out DOUBLE PRECISION;
BEGIN
out := (AVG(cell_load) OVER (PARTITION BY id, s_id));
RETURN out;
END;
$$;
上面返回的average_load值与cell_load值完全相同,没有任何聚合。
id s_id cell_load average_load
1 1 4 6
1 1 2 6
1 1 12 6
1 2 3 4
1 2 5 4
2 1 10 4.33
2 1 1 4.33
2 2 2 3.66
2 2 3 3.66
2 2 6 3.66
1条答案
按热度按时间bgtovc5b1#
您正在为单行调用函数。使用窗口函数仅对具有多行的数据集有意义。我认为你根本不需要函数,例如:
或:
如果函数是必需的,它应该看起来像这样: