You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JOIN关联同表查询结果并统计购两款产品的客户数

用JOIN统计同时购买两款特定产品的客户数

假设你的订单表名为orders,包含customer_id(客户标识)和product_id(产品标识)两列,要统计同时购买两款特定产品(比如prod_A和prod_B)的客户数量,完全可以用JOIN实现,具体SQL语句如下:

SELECT COUNT(DISTINCT o1.customer_id) AS total_customers
FROM orders o1
INNER JOIN orders o2 
  ON o1.customer_id = o2.customer_id
WHERE o1.product_id = 'prod_A'  -- 替换为第一款目标产品的标识
  AND o2.product_id = 'prod_B'; -- 替换为第二款目标产品的标识

逻辑说明

  • 自连接操作:将同一张订单表以o1和o2为别名做自连接,通过customer_id关联,确保我们处理的是同一个客户的购买记录。
  • 精准筛选:让o1只保留购买了第一款产品的记录,o2只保留购买了第二款产品的记录,两者连接后得到的就是同时购买两款产品的客户数据。
  • 去重统计:用COUNT(DISTINCT)避免同一客户因多次购买同一产品被重复计数。

额外提供一种非JOIN的常用写法(供参考)

如果觉得自连接操作繁琐,也可以用分组筛选的方式实现相同效果:

SELECT COUNT(customer_id) AS total_customers
FROM (
    SELECT customer_id
    FROM orders
    WHERE product_id IN ('prod_A', 'prod_B')
    GROUP BY customer_id
    HAVING COUNT(DISTINCT product_id) = 2
) AS filtered_customers;

这个思路是先筛选出购买过两款目标产品的所有记录,按客户分组后,只保留恰好购买了两款不同产品的客户,最后统计这些客户的数量。

内容的提问来源于stack exchange,提问作者Pipeloops

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 13:42:10