Bien, habiendo tenido ya oportunidad de analizar el contenido de la tabla y viendo la estructura de datos, el error parece provenir de un defecto de diseño, sumado a un un desaprovechamiento de las propiedades de los campos.
El tema es así: Hay cierta inconsistencia en la estructura de datos porque tienes dos columnas de fecha distintas y no hay forma que cumplan con una consulta óptima en esas condiciones. Además una de ellas hace que el otro campo se vuelva innecesario si sólo variará su valor de 1 a 0.
Tu estructura es esta:
Todos los campos están declarados como NOT NULL, pero el caso es que de esos al menos fechaClick y fechaLead no deberían serlo porque sólo cuando se producen los eventos que los alimentan.
Al cargarlos con un vacío no permites que exista un valor NULL, con lo que si quisieras
contar los campos, los va a contar como si fuesen fechas. Por eso es que no sirve ese esquema.
Esto es lo que hay:
Código MySQL:
Ver originalmysql
> SELECT idUsuario
, lead
, fecha
, fechaLead
, puntos
, idRecomendacion
+--------------------------+------+----------------+----------------+--------+-----------------+
| idUsuario | lead | fecha | fechaLead | puntos | idRecomendacion |
+--------------------------+------+----------------+----------------+--------+-----------------+
+--------------------------+------+----------------+----------------+--------+-----------------+
La tabla, para tener una estructura coherente debería ser:
Los datos deberían ir así:
Código MySQL:
Ver original(`idRecomendacion`, `idUsuario`, `amigo`, `lead`, `click`, `fecha`, `fechaClick`, `fechaLead`, `puntos`)
Y la consulta sería:
Código MySQL:
Ver originalSELECT IFNULL(FECHA_LEAD
, 'Totales') FECHA
, RECOMENDACIONES
, LEADS
COUNT(idRecomendacion
) recomendaciones
,
+------------+-----------------+-------+
| FECHA | RECOMENDACIONES | LEADS |
+------------+-----------------+-------+
| 2010-01-01 | 1 | 0 |
| 2010-01-03 | 1 | 0 |
| 2010-01-05 | 1 | 0 |
| 2010-01-07 | 2 | 1 |
| 2010-01-09 | 1 | 0 |
| 2010-01-11 | 1 | 0 |
| 2010-02-12 | 1 | 0 |
| Totales | 8 | 1 |
+------------+-----------------+-------+
Nota: es muchísmo más eficiente guardar una fecha como DATE o DATETIME que como VARCHAR. ¿Por qué las pusiste en ese tipo de campo?