我有一個函數的問題,我需要按兩列分組,並採取另一列的平均值。由兩列分組,並找到另一個PostgreSQL中的平均值
爲什麼以下不起作用?
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
輸入的函數(cell_load)是一個單一的值。將聚合函數(平均值)應用於單個值將導致相同的值。彙總函數用於一組值 –
是的,但我需要按id和s_id分組的「cell_load」值的平均值。 我在想沒有必要打印表格的樣本。 – jovicbg
然後,爲什麼你將'cell_load'作爲參數傳遞給函數?另外兩個參數將足以從* aggregate *中選擇*正好一個* cell *。 '從id = $ 2和s_id = $ 3'的the_table中選擇AVG(cell_value)將給出一個標量結果。 – wildplasser