我如何计算购买次数超过购买次数的客户?
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 交易日期的时间部分。根据您的数据库,其他选项可能可用。
我有一个 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 交易日期的时间部分。根据您的数据库,其他选项可能可用。