Cita: pero la funcion count(*) me devuelve 0 si no hay nada pero la fecha evento me la devuelve en NULL
Porque el SQL no puede devolver el dato que no existe, cuando no está representado en ninguna tabla. Así de sencillo.
El SQL trabaja con los datos registrados en la tabla en forma real. No puede darte, tomados sólo de esa tabla, un valor cero (0), porque no tiene cómo encontrarlo.
Distinto sería se tienes una tabla donde aparezca la lista de sitios, entonces la cosa se simplifica: