gpt4 book ai didi

SQL:如何提取已执行操作 A 但从未执行过操作 B 的客户 ID?

转载 作者:行者123 更新时间:2023-12-02 09:10:40 24 4
gpt4 key购买 nike

以下是我需要提取的内容:所有仅在线订购的客户(即客户 1 和 3)。

鉴于表格的结构方式(客户 4 在列表中出现两次),我很难从该数据提取中忽略客户 4,因为他们在网上和商店购买。

数据:

客户 1 - 在线购买

客户 2 - 在商店购买

客户 3 - 在线购买

客户 4 - 在线购买

客户 4 - 在商店购买

这是我的代码,我肯定仍然将客户 4 纳入其中,但不确定如何排除它们。当然,我正在处理的完整数据要大得多。

SELECT DISTINCT(table.customer_id)
FROM table
WHERE ((table.purchase_channel='store')
AND NOT (table.purchase_channel='online'))

最佳答案

我会使用条件聚合:

select t.customer_id
from t
group by t.customer_id
having sum(case when t.purchase_channel = 'store' then 1 else 0 end) > 0 and
sum(case when t.purchase_channel = 'online' then 1 else 0 end) = 0;

我发现这种结构对于各种条件都非常方便。根据您的具体情况,您可以将其缩短为:

select t.customer_id
from t
where t.purchase_channel in ('store', 'online')
group by t.customer_id
having min(t.purchase_channel) = 'store' ;

关于SQL:如何提取已执行操作 A 但从未执行过操作 B 的客户 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52707864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com