我需要编写一个存储过程,该过程可以将我的客户归还给特定的细分市场,因为他们在特定时间范围内的购买行为。
对于这些客户,segment(细分)字段将设置为true,如果他们的细分为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';
非常感谢您的帮助
答案 0 :(得分:1)
为什么要为此使用循环?只需直接进行更新即可:
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;