El COUNT() no es funcional para lo que quieres hacer, porque en el contexto que lo usas siempre sumará datos de la misma forma, ya que en realidad para que los cuente, el CASE interior debe devolver algo. Y por "algo" me refiero a cualquier cosa que no sea un NULL... incluyendo los ceros.
O sea que te está contando hasta los ceros.
Para que veas que es cierto:
Código MySQL:
Ver original+--------+
| cuenta |
+--------+
| 1 |
+--------+
Por otro lado, hacer subconsultas en las columnas del SELECT es algo
extremadamente ineficiente , ya que esas subconsultas
se ejecutan una vez por cada registro devuelto por la consulta mayor. O sea que si esa consulta devolviese 1000 registros, cada subconsulta del SELECT se ejecutará 1000 veces...
¿Un espanto, no?
Tratemos de pulir un poco la cosa:
Código MySQL:
Ver original CT.DESC_PRODUCTO PROD,
SUM(IF(FECHA
= T1.DIA_REF
, 1, 0)) DIA_7
FROM ces_ivr_eventos CE
INNER JOIN ces_ivr_tipo_vel_inet CT
ON CE.RUT
= CT.RUT_PERSONA
abrev_evento
= 'internet' AND
No estoy muy seguro de que si es esto lo que quieres lograr, pero usando SUM() e IF() seguro que lograrás contar mejor que con ese enredo que estás haciendo ahora.
Lo que si, para poder ayudarte mejor sería bueno que nos explicases qué es lo que se
supone que estás contando y
qué es lo que deseas lograr. Porque la consulta que planteas es, como mínimo, confusa.