Explicación por si te ayuda a entenderlo mejor:
con esto
Código sql:
Ver originalSELECT MIN(
START) AS primfecha, phone
FROM cdrin
GROUP BY phone
busco la primera aparición de todas las llamadas, y lo hago agrupando por teléfono y buscando el mínimo de la fecha, es decir, la fecha más baja. Si lanzas esa consulta verás que sólo te muestra el phone y el start en el que un phone apareció por primera vez. Eso es el corazón de la consulta. Luego, a su alrededor, hago un inner join que une la tabla en sí con esa consulta, pero con dos claves para el cruce, la coincidencia de phone y de start. Puesto que ya he seleccionado los valores mínimos de fecha y agrupado tendré los valores de esos días y teléfono. Luego agrupo por start para poder contarlos y hago un count de los phone, procurando, eso sí, que no me cuente dos veces si alguien, el día que entró por primera vez, entró más de una vez, algo que consigo con DISTINCT. No estoy seguro de que todo funcione al 100%, pero es un primer acercamiento. Seguro que hay otras consultas para hacer esto, pero esta fue la que se me ocurrió.
Ah, en cuanto a start, pensé que se trataba de un campo DATE y no DATETIME. Tu solución con DATE_FORMAT es buena para resolver el problema de las horas minutos y segundos a la hora de agrupar por día.