Выполните запрос на обновление, который устанавливает True, если условие и False, если не условие - PullRequest
0 голосов
/ 16 ноября 2018

Мне нужно написать хранимую процедуру, которая возвращает мне клиентов, которые попадают в определенный сегмент, из-за их покупательского поведения в определенный период времени.

Для этих клиентов поле сегмента будет установлено в 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';

Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 16 ноября 2018

Зачем вам использовать цикл для этого? Просто сделайте обновление напрямую:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...