Hallé este ejemplo, escrito por Tanel Poder, aquí y decidí traducirlo para los hispanohablantes. Lo probé en Oracle 11.2.0.1.0. Hay una diferencia entre select count(*) o select count(constante) y select count(nombre-de-columna):
SQL> select count(*) from v$session
2 /
COUNT(*)
----------
513
SQL> select count(123) from v$session
2 /
COUNT(123)
----------
513
SQL> select count(username) from v$session
2 /
COUNT(USERNAME)
---------------
487
SQL>
Select count(*) y select count(constante) cuentan todas las líneas que ven pero select count(nombre-de-columna) cuenta sólo las líneas donde columna no sea null. Si cambiamos el select count(*) o el select count(123) para contar sólo las líneas donde username no sea null, el resultado que vemos es igual al resultado del select count(username):
SQL> select count(*) from v$session
2 where username is not null
3 /
COUNT(*)
----------
487
SQL> select count(123) from v$session
2 where username is not null
3 /
COUNT(123)
----------
487
SQL>
Y si cambiamos el select count(username) para incluir las líneas donde username sea null, el resultado que vemos es igual a los resultados del select count(*) o del select count(123):
SQL> select count(nvl(username,'blah'))
2 from v$session
3 /
COUNT(NVL(USERNAME,'BLAH'))
---------------------------
513
SQL>
No hay comentarios:
Publicar un comentario