如何根据数量进行 SQL 查询

How do I do a SQL query based on number of quantity

我有一个 table 包含电子邮件地址和帐号(以及其他数据)。

为了简化起见,我删除了其他数据。

123456, joe@place.com
123457, phil@place.com
123456, jil@place.com
123456, jane@place.com
123458, john@place.com

根据上面的示例,大多数帐户都有多个电子邮件地址。

我需要创建一个查询来告诉我:

你可以试试这个:

select accountnumbers, count(*)
from yourtablename
group by accountnumbers

您可以使用

 select acc_no, count(*) from your_table group by acc_no

您可以使用条件聚合来获得您想要的结果集:

SELECT COUNT(CASE WHEN cnt = 1 THEN 1 END) AS cnt1,
       COUNT(CASE WHEN cnt = 2 THEN 1 END) AS cnt2,
       COUNT(CASE WHEN cnt = 3 THEN 1 END) AS cnt3,
       ....
FROM ( 
SELECT COUNT(*) AS cnt, accountId
FROM accounts
GROUP BY accountId ) t

cnt1 包含有 1 个电子邮件的帐户 ID 的数量,cnt2 有 2 个电子邮件的帐户 ID 的数量,等等。

SQL Fiddle Demo here

内部查询 (q) 将计算每个帐户有多少个不同的电子邮件地址。然后外部查询将计算每个计数桶中有多少帐户(1、2、3、...)。

SELECT q.email_counter, COUNT(*) AS num_accounts
    FROM (SELECT account_number, 
                 COUNT(DISTINCT email_address) AS email_counter
              FROM YourTable
              GROUP BY account_number) q
    GROUP BY q.email_counter;

已经有很好的答案了,但是我只想通过 having 子句答案添加一个组:

declare @intDesiredCount int = 2 --or 3 or 4 or 10
select AccountNumber
  , Count(1) as EmailAddressCount
from ContactTable
Group by AccountNumber
having Count(1) = @intDesiredCount

对 post 聚合值进行筛选,在本例中为电子邮件地址的数量。