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

如何统计仅持有单一产品/同时持有全部产品的客户数量

SQL统计需求解答

你提供的原始表结构及测试数据如下:

idnameproduct
1Benx
2Anny
3Katey
4Johnx
4Johny

以下解答基于标准SQL语法,可适配绝大多数主流关系型数据库,代码中的表名请替换为你的实际表名。

1. 统计仅持有x产品的客户数量

实现思路

先筛选出所有持有x产品的客户,再排除掉同时持有其他任意产品的客户,最后对客户ID去重计数即可。

参考代码

SELECT COUNT(DISTINCT id) AS 仅持有x的客户数
FROM 表名 t1
WHERE product = 'x'
  AND NOT EXISTS (
    SELECT 1 FROM 表名 t2 
    WHERE t2.id = t1.id 
      AND t2.product != 'x'
);

测试结果

基于你提供的测试数据,查询结果为1,仅客户Ben符合条件。

2. 统计同时持有所有产品的客户数量

实现思路

首先统计全表共有多少种不同的产品,再按客户ID分组统计每个客户持有的不同产品数量,数量等于总产品数的客户即为符合条件的用户,最后计数即可。

参考代码

WITH product_total AS (
    -- 统计全表总产品数量
    SELECT COUNT(DISTINCT product) AS total_count
    FROM 表名
)
SELECT COUNT(*) AS 持有所有产品的客户数
FROM (
    -- 筛选出持有产品数等于总产品数的客户
    SELECT id
    FROM 表名
    GROUP BY id
    HAVING COUNT(DISTINCT product) = (SELECT total_count FROM product_total)
) qualified_users;

测试结果

基于你提供的测试数据,全表共2种产品,仅客户John同时持有所有产品,查询结果为1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:09:02