我正在尝试获取过去 30 天内的交易总额。但是,我还需要确保帐户上也没有 #KYC:Pass 评论。
我在 Snowflake 中,尝试运行各种子查询和连接。我正式陷入困境。
SELECT SUM(amount_base_unit) as GPV, p.unit_token FROM PAYMENTS_DW.PUBLIC.PAYMENT_TRANSACTIONS as p
WHERE country_code='US'
AND NOT EXISTS (
SELECT c.target_token FROM REGULATOR.RAW_OLTP.COMMENTS as c
WHERE c.text ILIKE '%#KYC:Pass%'
and c.updated_at < '2019-10-11'
)
AND is_GPV='1'
AND PAYMENT_TRX_RECOGNIZED_AT BETWEEN dateadd(month,-3,current_timestamp()) AND dateadd(month,0,current_timestamp())
GROUP BY unit_token
HAVING SUM(amount_base_unit) >= 10000000
LIMIT 5
;
它没有返回任何行(我知道这是不正确的)。各位有什么想法吗?
编辑/更新:
我切换了查询以查看出了什么问题,看起来子查询是罪魁祸首。 NOT ILIKE KYC:Pass 过滤器一直有效,直到我放入聚合子查询来总结交易。
FROM REGULATOR.RAW_OLTP.CASES c
JOIN REGULATOR.RAW_OLTP.AUDIT_LOGS ral
ON ral.case_id = c.id
WHERE ral.comment not ilike '%#KYC:Pass%'
AND EXISTS (SELECT SUM(p.amount_base_unit) FROM PAYMENTS_DW.PUBLIC.PAYMENT_TRANSACTIONS as p
WHERE p.country_code ='US'
AND p.is_GPV='1'
AND p.PAYMENT_TRX_RECOGNIZED_AT BETWEEN dateadd(month,-1,current_timestamp()) AND dateadd(month,0,current_timestamp())
GROUP BY p.unit_token
HAVING SUM(p.amount_base_unit) >= 10000000)
LIMIT 5
;
所以,我认为更接近?
最佳答案
这个子查询:
NOT EXISTS (SELECT c.target_token
FROM REGULATOR.RAW_OLTP.COMMENTS as c
WHERE c.text ILIKE '%#KYC:Pass%' AND
c.updated_at < '2019-10-11'
)
与外部查询不相关。因此,它对所有行返回 true 或 false。我推测您需要一个相关子句。我不知 Prop 体是什么,但也许:
NOT EXISTS (SELECT 1
FROM REGULATOR.RAW_OLTP.COMMENTS c
WHERE c.target_token = p.unit_token AND
c.text ILIKE '%#KYC:Pass%' AND
c.updated_at < '2019-10-11'
)
关于mysql - 如何消除查询中的某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58349145/