SQL distinct和count

时间:2009-05-26 23:36:50

标签: sql count aggregate distinct

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

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

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

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

5 个答案:

答案 0 :(得分:29)

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

我应该这样做

答案 1 :(得分:7)

您可能想尝试类似

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

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

答案 2 :(得分:4)

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

(你不需要DISTINCT和GROUP BY。)

答案 3 :(得分:2)

那是因为您按日期分组,而不是电话

在一个日期分组中,可能有三个不同的数字,SQL无法知道您想要哪一个。

答案 4 :(得分:0)

尝试以下

计算(电话)FROM电话

会给你不同的数量。