Mysql 如何消除查询中的某些值
我正试图在过去30天内得到一笔交易。但是,我还需要确保没有KYC:也要传递对帐户的评论 我在Snowflake中,我试着运行各种子查询和联接。我正式被卡住了Mysql 如何消除查询中的某些值,mysql,sql,snowflake-cloud-data-platform,Mysql,Sql,Snowflake Cloud Data Platform,我正试图在过去30天内得到一笔交易。但是,我还需要确保没有KYC:也要传递对帐户的评论 我在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 FRO
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 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。我想你需要一个关联从句。我不知道具体是什么,但也许:
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'
)
此子查询:
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。我想你需要一个关联从句。我不知道具体是什么,但也许:
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'
)
考虑到Gordon的观点,不存在需要考虑的相关子查询,snowflake有时表现得很奇怪 切换到CTE并通过IS NULL检查失败的左连接是否有帮助
WITH kyc_pass_com AS (
SELECT DISTINCT target_token
FROM REGULATOR.RAW_OLTP.COMMENTS
WHERE text ILIKE '%#KYC:Pass%'
AND updated_at < '2019-10-11'
)
SELECT SUM(amount_base_unit) as GPV
,p.unit_token
FROM PAYMENTS_DW.PUBLIC.PAYMENT_TRANSACTIONS AS p
LEFT JOIN kyc_pass_com AS c
ON c.target_token = p.unit_token
WHERE p.country_code='US'
AND c.target_token IS NULL
AND is_GPV='1'
AND PAYMENT_TRX_RECOGNIZED_AT BETWEEN dateadd(month,-3,current_timestamp()) AND current_timestamp()
GROUP BY unit_token
HAVING SUM(amount_base_unit) >= 10000000
LIMIT 5;
考虑到Gordon的观点,不存在需要考虑的相关子查询,snowflake有时表现得很奇怪 切换到CTE并通过IS NULL检查失败的左连接是否有帮助
WITH kyc_pass_com AS (
SELECT DISTINCT target_token
FROM REGULATOR.RAW_OLTP.COMMENTS
WHERE text ILIKE '%#KYC:Pass%'
AND updated_at < '2019-10-11'
)
SELECT SUM(amount_base_unit) as GPV
,p.unit_token
FROM PAYMENTS_DW.PUBLIC.PAYMENT_TRANSACTIONS AS p
LEFT JOIN kyc_pass_com AS c
ON c.target_token = p.unit_token
WHERE p.country_code='US'
AND c.target_token IS NULL
AND is_GPV='1'
AND PAYMENT_TRX_RECOGNIZED_AT BETWEEN dateadd(month,-3,current_timestamp()) AND current_timestamp()
GROUP BY unit_token
HAVING SUM(amount_base_unit) >= 10000000
LIMIT 5;
谢谢你的回答!不幸的是,它仍然在返回那个该死的KYCPass评论。我希望我的解释是正确的。我是新手,自学成才。它必须和“%KYC:Pass%”完全一样还是可以改成像“%KYC%Pass%”一样?@SirKefka。对c.text i(如“%KYC:Pass%”和c.updated_at<'2019-10-11'进行筛选)的查询是否返回任何内容?它返回任何内容。看起来是聚合函数把事情搞砸了。作为一个实验,我把查询顺序调高了一点:谢谢你的回答!不幸的是,它仍然在返回那个该死的KYCPass评论。我希望我的解释是正确的。我是新手,自学成才。它必须和“%KYC:Pass%”完全一样还是可以改成像“%KYC%Pass%”一样?@SirKefka。对c.text i(如“%KYC:Pass%”和c.updated_at<'2019-10-11'进行筛选)的查询是否返回任何内容?它返回任何内容。看起来是聚合函数把事情搞砸了。作为一个实验,我把查询顺序调高了一点:我怀疑这个社区80%以上的人是“自学成才”的。我怀疑这个社区80%以上的人是“自学成才”的。看见