我如何计算购买次数超过购买次数的客户?

How do I count the customers that made more than a purchase?

我有一个 table 调用的订单,如下所示:

我正在尝试显示:

1.Total 只购买了 1 次的顾客数(只去过一次商店,可能他们购买了多件商品,但这只是一次事件)

2.Total 统计购买次数超过 1 次(多次光顾商店)的顾客数量

我一直在执行以下查询,但结果与我从数据透视图中看到的不完全匹配 table。在每个购物会话中,可以有多个行和多个项目,但每个购物会话仍然会有一个唯一标识符和一个唯一日期。

SELECT 计数(不同 customer_id)

来自 命令 AS c

WHERE ( SELECT COUNT(distinct transaction_id)

FROM orders as b

WHERE

    b.customer_id = c.customer_id) =1 

并且我将最后一行替换为 >1 来表示不止一次购物的顾客

如有任何提前帮助,我们将不胜感激

您可以使用两个级别的聚合:首先计算每个客户的访问次数(即他们至少有多少不同的有一次交易),然后检查有多少客户有 1 次访问,有多少有更多。

select
    sum(case when cnt_visits = 1 then 1 else 0 end) customers_with_1_visit,
    sum(case when cnt_visits = 1 then 0 else 1 end) customers_with_more_visits
from (
    select customer_id, count(distinct cast(transaction_date as date)) cnt_visits
    from mytable
    group by customer_id
) t

这使用 cast(... as date) 到 trim 交易日期的时间部分。根据您的数据库,其他选项可能可用。