SQL distinct和count

20 sql aggregate count distinct

我有一个查询,我想获得不同的日期,与这些日期相关的电话号码,以及每个日期的电话号码计数.

例如,我有一个包含日期和电话号码的数据库,我想要结果

9/2005      5554446666    3
9/2005      4445556666    1
10/2005     1112223333    1
11/2005     2223334444    2
Run Code Online (Sandbox Code Playgroud)

我可以通过此查询获取日期和计数:

SELECT DISTINCT date, count(phone) AS count
FROM calls
GROUP BY date
Run Code Online (Sandbox Code Playgroud)

我似乎无法得到的是"计数"正在计算的电话号码.我想我需要某种聚合函数来获取唯一值列表的单个实例,但First()和其他一些只抛出SQL错误.我需要子查询吗?

Tet*_*ron 30

SELECT date, PhoneNumber, count(phone) AS count
    FROM calls
    GROUP BY date, PhoneNumber 
Run Code Online (Sandbox Code Playgroud)

应该这样做我想


Kib*_*bee 8

你可能想尝试类似的东西

SELECT Date, Phone, Count(*) As Count From Calls GROUP BY Date, Phone
Run Code Online (Sandbox Code Playgroud)

这将为您提供每个日期的每个电话号码的计数,以及该号码在该日期出现的次数.


jos*_*ley 2

那是因为您是按日期而不是电话进行分组。

在日期的一组中可能存在三个不同的数字,并且 SQL 不可能知道您想要哪一个。