我需要编写一个存储过程,它会让我的客户返回,因为他们在特定时间段内的购买行为,这些客户属于特定的细分市场。
对于这些客户,segment字段将设置为true,如果他们的segment为true,则不来自给定查询的客户需要设置为false。
我对程序本身有问题,我认为返回类型有问题,有人能帮我吗。
在不使用时态表的情况下,是否可以将查询中没有的值设置为FALSE?
CREATE OR REPLACE FUNCTION segment_men1() AS
RETURNS void AS
$BODY$
BEGIN
FOR r IN
SELECT AD.id FROM account AD
INNER JOIN transactions TRA ON TRA.customerID = AD.id
WHERE AD.gender = "male"
AND TRA.transactionDate >= current_date - interval "365" days;
LOOP
UPDATE account
SET Segment_Men = true
WHERE NEXT r;
END LOOP;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql';
非常感谢您的帮助
为什么要使用循环?直接更新即可:
UPDATE account AD
SET Segment_Men = true
FROM transactions TRA
WHERE TRA.customerID = AD.id AND
AD.gender = 'male' AND
TRA.transactionDate >= current_date - interval '365' days;