【发布时间】:2021-03-27 12:25:55
【问题描述】:
我有一个问题。
为什么这段代码有效:
-- users's first purchase day
WITH befor_campaign AS (
SELECT user_id,
MIN(created_at) AS first_day_of_purchase
FROM marketing_campaign
GROUP BY user_id )
-- Find users purchased products on the first day:
,user_w_first_day_purchase_after_mkt_work AS
(SELECT
user_id, product_id
FROM marketing_campaign
WHERE (user_id, created_at) IN (SELECT * FROM befor_campaign)
)
-- Pull all users who meet requirments
,data_set AS (
SELECT *
FROM marketing_campaign
WHERE (user_id, created_at) NOT IN (SELECT * FROM befor_campaign)
AND (user_id, product_id) NOT IN (SELECT * FROM user_w_first_day_purchase)
)
SELECT count(distinct user_id) FROM data_set
但这不起作用并给我错误“参数太多”?
WITH Before_MKT as
(
SELECT user_id, product_id,
Min(created_at)
FROM marketing_campaign
Group By user_id, product_id
Order by user_id
)
,data_set AS (
SELECT user_id
FROM marketing_campaign
where (user_id) NOT IN (SELECT * FROM Before_MKT)
)
SELECT count(distinct user_id) FROM data_set
我正在尝试优化我的查询,将两个步骤合二为一,但它不起作用,我不明白为什么。有人可以帮助我吗? 非常感谢!
【问题讨论】:
标签: sql postgresql subquery