2009-05-26 18 views
18

Tengo una consulta en la que quiero obtener fechas distintas, los números de teléfono asociados con esas fechas y un recuento de los números de teléfono por fecha.SQL distinct y count

Por ejemplo, tengo una base de datos con fechas y números de teléfono y quiero que el resultado sea

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

puedo conseguir las fechas y los recuentos con esta consulta:

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

Lo Parece que no puedo obtener el número de teléfono que está contando el "conteo". Creo que necesito algún tipo de función agregada para obtener una única instancia de la lista de valores únicos, pero First() y algunos otros solo lanzan un error de SQL. ¿Necesito una subconsulta?

Respuesta

2

Eso es porque estás agrupando por fecha no por teléfono.

En una agrupación de una fecha puede haber tres números diferentes y es imposible que SQL sepa cuál es el que desea.

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

debe hacerlo Creo

7

es posible que desee intentar algo así como

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

Esto le dará un recuento de cada número de teléfono en cada fecha, con el número de veces ese número apareció en esa fecha.

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

(No es necesario distintas con un GROUP BY.)

0

intente lo siguiente

Count (teléfono) a partir de llamadas

le dará la Distinct Count.