Created
September 7, 2020 09:46
-
-
Save Khuzha/9dc3defc96fe63912685a47a1f55e069 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Правильно подсчитывающий запрос: | |
```SELECT p2.login, tr.timestamp::date, p2.partner_id, tr.currency, p1.ref_camp, tr.subtype, | |
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, | |
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;``` | |
Пример: если первый запрос в столбце deposit выводит 30000, второй выведет 750000. И это при том, что не менялась ни группировка, ни сумма, ни что-либо еще, связанное с deposit |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment