2009-05-26 4 views
18

У меня есть запрос, где я хочу получить разные даты, номера телефонов, связанные с этими датами, и количество телефонных номеров в день.SQL different и count

К примеру, у меня есть база данных с датами и номерами телефонов, и я хочу, чтобы результат

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-ошибку. Мне нужен подзапрос?

ответ

2

Это потому, что вы группируете не телефон.

В одной группировке даты могут быть три разных номера, и SQL не может знать, какой из них вы хотите.

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

должен это сделать, я думаю,

7

Вы можете попробовать что-то вроде

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 

(Вам не нужно DISTINCT с GROUP BY.)

0

Попробуйте выполнить следующие действия

Count (телефон) от звонков

Даст вам Distinct Count.