2009-05-26 11 views
18

J'ai une requête où je veux obtenir des dates distinctes, les numéros de téléphone associés à ces dates et le nombre de numéros de téléphone par date.SQL distinct et compte

Par exemple, j'ai une base de données avec les dates et les numéros de téléphone et je veux que le résultat soit

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

je peux obtenir les dates et les comptes avec cette requête:

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

Qu'est-ce que Je n'arrive pas à trouver le numéro de téléphone que le compte compte. Je pense que j'ai besoin d'une sorte de fonction d'agrégat pour obtenir une seule instance de la liste des valeurs uniques, mais First() et quelques autres ne lancent qu'une erreur SQL. Ai-je besoin d'une sous-requête?

Répondre

2

C'est parce que vous regroupez par date pas par téléphone.

Dans un groupe d'une date, il peut y avoir trois nombres différents et il est impossible pour SQL de savoir lequel vous voulez.

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

devrait le faire, je pense

7

Vous voudrez peut-être essayer quelque chose comme

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

Cela vous donnera un décompte de chaque numéro de téléphone à chaque date, avec combien de fois ce nombre est apparu à cette date.

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

(Vous n'avez pas besoin DISTINCT avec un GROUP BY.)

0

faites les essais suivants

Count (téléphone) des appels

vous donnera le comte Distinct.