Supongamos una tabla por todos conocida y las siguentes sql...
Código SQL
[-]SELECT count(codcli) ,sum(codcli +1), codcli
FROM clientes
WHERE codcli=999
Código SQL
[-]SELECT count(codcli) ,sum(codcli +1), codcli
FROM clientes
WHERE codcli=999
GROUP BY codcli
La primera versión da error ya que la columna codcli, no está incluida en ninguna función de agregado y no hay claúsula GROUP BY. Al añadirla, ya todo corre bien como es normal.
La sentencia COUNT devuelve CERO si no encuentra ningún registro, por eso si la tabla está vacía o si ese registro no existe, devolverá CERO. En cualquier otro caso, el valor que le corresponda.
La sentencia SUM ignora los valores nulos, por lo menos en T-SQL, por lo que si codcli es null, no debería devolver nada.
Ahora bien, a mi también me puede parecer lógico que en otras implementaciones hayan adoptado la postura de devolver cero como la funcion COUNT.
Saludos, y buen viaje a los que os vais de vaciones.
Y cuidado con las francesas/es.