2009-05-26 11 views
18

Mam zapytanie, w którym chcę uzyskać różne daty, numery telefonów powiązane z tymi datami oraz liczbę numerów telefonów na datę.SQL odrębny i liczyć

Na przykład, Mam bazę danych z datami i numerami telefonów i chcę wynikiem będzie

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

mogę daty i liczy się z tym zapytaniem:

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

Co Nie wydaje mi się, aby numer telefonu liczył "licznik". Myślę, że potrzebuję jakiejś funkcji agregującej, aby uzyskać pojedynczą instancję listy unikalnych wartości, ale First() i kilka innych tylko rzuca błąd SQL. Czy potrzebuję podzapytania?

Odpowiedz

2

Dzieje się tak, ponieważ grupujesz według datę nie przez telefon.

W jednej grupie daty mogą występować trzy różne liczby, a SQL nie może wiedzieć, który z nich chce.

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

powinien to zrobić myślę

7

może chcesz spróbować czegoś podobnego

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

To daje tally każdego numeru telefonu na każdy dzień, o ile razy ten numer pojawił się w tym dniu.

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

(nie trzeba DISTINCT z GROUP BY).

0

Spróbuj wykonać następujące

Count (telefonu) z połączeń

daje wyraźną policzyć.