Bạn đang hiển thị một phép tính trung bình, nhưng muốn giá trị văn bản đầu tiên bạn thấy?
Dưới đây là cách để làm điều đó. Giả sử bạn muốn giá trị khác không đầu tiên, nghĩa là. Nếu không, bạn sẽ cần theo dõi xem bạn đã có giá trị hay chưa.
Hàm tích lũy được viết dưới dạng plpgsql và sql - hàm plpgsql cho phép bạn sử dụng tên biến và gỡ lỗi nó. Nó chỉ đơn giản sử dụng COALESCE so với giá trị tích lũy trước đó và giá trị mới và trả về giá trị khác không đầu tiên. Vì vậy - ngay sau khi bạn có giá trị không null trong bộ tích lũy, mọi thứ khác sẽ bị bỏ qua.
Bạn cũng có thể muốn xem xét hàm cửa sổ "first_value" cho loại điều này nếu bạn đang sử dụng phiên bản PostgreSQL (8.4+) hiện đại.
http://www.postgresql.org/docs/9.1/static /functions-window.html
HTH
BEGIN;
CREATE FUNCTION remember_first(acc text, newval text) RETURNS text AS $$
BEGIN
RAISE NOTICE '% vs % = %', acc, newval, COALESCE(acc, newval);
RETURN COALESCE(acc, newval);
END;
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION remember_first_sql(text,text) RETURNS text AS $$
SELECT COALESCE($1, $2);
$$ LANGUAGE SQL IMMUTABLE;
-- No "initcond" means we start out with null
--
CREATE AGGREGATE first(text) (
sfunc = remember_first,
stype = text
);
CREATE TEMP TABLE tt (t text);
INSERT INTO tt VALUES ('abc'),('def'),('ghi');
SELECT first(t) FROM tt;
ROLLBACK;