Я пытаюсь перебрать временную таблицу внутри функции, где я хочу сделать обновление для каждой строки.
Временная таблица должна содержать все идентификаторы пользователей, которые выходят из запроса,После этого для каждого отдельного пользователя следует проверить, если процент транзакций с атрибутами меньше 50% всех транзакций.
В конце следует обновить поле счета master_segments.
Мой код выглядит так:
CREATE OR REPLACE FUNCTION temptable()
RETURNS VARCHAR
AS $$
BEGIN
CREATE TEMP TABLE IF NOT EXISTS testTable AS
SELECT account.sfid, transactions.transactionNumber
FROM account
INNER JOIN transactions ON account.sfid =transactions.accountsfid
INNER JOIN transactionLineItems ON transactions.transactionNumber = transactionLineItems.transactionNumber
INNER JOIN products ON transactionLineItems.USIM = products.USIM
WHERE account.gender = '1' AND (transactions.transactionDate >= current_date - interval '730' day AND products.gender = 'female' AND products.agegroup = 'adult');
FOR j IN testTable.sfid LOOP
SELECT(
(SELECT COUNT(transactions.transactionNumber)
FROM transactions
INNER JOIN account ON account.sfid = transactions.accountsfid
INNER JOIN transactionLineItems ON transactions.transactionNumber = transactionLineItems.transactionNumber
INNER JOIN products ON transactionLineItems.USIM = products.USIM
WHERE products.gender = 'male' AND products.agegroup = 'adult' AND transactions.transactionDate >= current_date - interval '730' day)*1.0 /
(SELECT COUNT(transactions.transactionNumber)
FROM transactions
WHERE transactions.transactionDate >= current_date - interval '730' day)
) < 0.5;
UPDATE account
SET account.master_segments = 'Women' WHERE account.sfid = testTable.sfid;
END LOOP;
END;
$$ LANGUAGE plpgsql;
Я получаю это сообщение:
ERROR: syntax error at or near "testTable"
LINE 14: FOR j IN testTable.sfid LOOP
Есть ли у кого-то предложения по этому поводу?Спасибо!