SQL - 分布计数

3

你好,我有以下数据表:

 crm_id  | customer_id

jon         12345
jon         12346
ben         12347
sam         12348

我很乐意为您翻译以下内容:

我想展示以下内容:

Crm_ID count | Number of customer_ids
1                    2
2                    1

基本上,我想计算具有1、2、3、4、5+顾客ID的crm_id数量。

谢谢


1
标记正在使用的DBMS(MySQL,SQL Server等)。 - Yogesh Sharma
使用 COUNT()GROUP BY - anteAdamovic
1个回答

3
一种方法是进行两次聚合。首先,按crm_id聚合并生成计数。然后,再对这些计数本身进行聚合,并生成计数的计数。
SELECT
    cnt AS crm_id_cnt,
    COUNT(*) AS num_customer_ids
FROM
(
    SELECT crm_id, COUNT(DISTINCT customer_id) AS cnt
    FROM yourTable
    GROUP BY crm_id
) t
GROUP BY cnt;

请看下面的演示,使用MySQL提供,因为您没有指定特定的数据库(尽管我认为我的答案应该适用于大多数数据库)。

演示


{btsdaf} - Gordon Linoff
{btsdaf} - Tim Biegeleisen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接