SQL去重与计数

22

我有一个查询,想要获得唯一的日期、与这些日期相关联的电话号码以及每个日期对应的电话号码数量。

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

9/2005      5554446666    3
9/2005      4445556666    1
10/2005     1112223333    1
11/2005     2223334444    2

我可以使用此查询获取日期和计数:

SELECT DISTINCT date, count(phone) AS count
FROM calls
GROUP BY date

我无法理解'count'在计算哪个电话号码。我认为需要某种聚合函数来获取唯一值列表的单个实例,但First()和其他一些函数只会抛出SQL错误。我是否需要一个子查询?

5个回答

32
SELECT date, PhoneNumber, count(phone) AS count
    FROM calls
    GROUP BY date, PhoneNumber 

我想应该可以这样做


9

您可能想尝试类似以下的内容:

SELECT Date, Phone, Count(*) As Count From Calls GROUP BY Date, Phone

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

4
SELECT date, phone, count(phone) AS count FROM calls GROUP BY date, phone

(在使用GROUP BY时不需要DISTINCT。)

2

这是因为你按日期而不是电话号码进行分组。

在按日期分组的情况下,可能存在三个不同的电话号码,SQL 无法确定你需要哪一个。


0

请尝试以下操作

从通话记录中查询 Count(phone)

将会给您返回不同的计数结果。


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