ST
Все же надеюсь на Ваши подсказки и попробую перефразировать вопрос:)
У меня есть запрос (1), к которому я добавил несколько строк, чтобы получить некие данные из еще одной таблицы. При этом я не писал ничего для изменения текущих столбцов первого запроса. Но в итоговом втором запросе, а точнее, его результатах, я получаю искаженные данные в столбцах, которые были еще в запросе 1. Из-за чего такое могло возникнуть?
Приведу сами запросы.
Запрос 1:
SELECT p2.login, tr.timestamp::date, p2.partner_id, tr.currency, p1.ref_camp, tr.subtype,Запрос 2:
SUM(tr.amount) FILTER(WHERE tr.type = 'deposit') AS deposit,
SUM(tr.amount) FILTER(WHERE tr.type = 'payout') AS payout,
SUM(tr.amount) FILTER(WHERE tr.type = 'deposit') -
SUM(tr.amount) FILTER(WHERE tr.type = 'payout') as income,
COUNT(DISTINCT tr.login) FILTER(WHERE tr.type = 'deposit') as dep_players_count,
COUNT(*) FILTER (WHERE tr.type = 'deposit' AND tr.subtype = 'first') as fd_count
FROM transactions_paysys tr
LEFT JOIN player p1 on p1.login = tr.login
LEFT JOIN player p2 on p2.partner_id = p1.ref_id::integer
WHERE p1.ref_id IS NOT NULL
AND tr.status = 'success'
AND timestamp::date = CURRENT_DATE - INTERVAL '3' DAY
GROUP BY tr.timestamp::date, p2.partner_id, tr.currency, p2.login, p1.ref_camp, tr.subtype
ORDER BY timestamp;
SELECT p2.login, tr.timestamp::date, p2.partner_id, tr.currency, p1.ref_camp, tr.subtype,P.S. искажается в частности столбец deposit, результат функции SUM. При этом ни функцию SUM(), ни GROUP BY я не изменял.
SUM(tr.amount) FILTER(WHERE tr.type = 'deposit') AS deposit,
SUM(tr.amount) FILTER(WHERE tr.type = 'payout') AS payout,
SUM(tr.amount) FILTER(WHERE tr.type = 'deposit') -
SUM(tr.amount) FILTER(WHERE tr.type = 'payout') as income,
COUNT(DISTINCT tr.login) FILTER(WHERE tr.type = 'deposit') as dep_players_count,
COUNT(*) FILTER (WHERE tr.type = 'deposit' AND tr.subtype = 'first') as fd_count
FROM transactions_paysys tr
LEFT JOIN player p1 on p1.login = tr.login
LEFT JOIN player p2 on p2.partner_id = p1.ref_id::integer
LEFT JOIN anon_user_transitions visit on visit.ref_id::integer = p2.partner_id AND visit.timestamp::date = tr.timestamp::date
WHERE p1.ref_id IS NOT NULL
AND tr.status = 'success'
AND tr.timestamp::date = CURRENT_DATE - INTERVAL '3' DAY
GROUP BY tr.timestamp::date, p2.partner_id, tr.currency, p2.login, p1.ref_camp, tr.subtype
ORDER BY tr.timestamp::date;
P.P.S. если в первом запросе в конкретной строке deposit = 30000, во втором значение уже 750000
также ссылка на Гист, кому удобнее: https://gist.github.com/Khuzha/9dc3defc96fe63912685a47a1f55e069