lunes, 2 de marzo de 2009

Diferencia en el uso de la función count(*) y count(nombre_columna)



En muchas ocasiones, no tenemos claro, como trabaja algunas de las más comunes funciones de Oracle SQL*Plus.

Uno de esos casos específicos, es cuando utilizamos la función “count”. Esta función trabaja de manera distinta cuando se aplica usando el comodín “*” o el nombre de la columna a ser sumada.

Veamos el siguiente ejemplo práctico.

Tenemos la tabla t1 con los siguiente registros. Observe que en la cuarta tupla, “Raul Ballestero” no tiene profesión asignada en la columna respectiva.

SQL> select * from t1;



Ejemplos de aplicación:

SQL> select count(*) from t1;

COUNT(*)
----------
4

SQL> select count(profesion) from t1;

COUNT(PROFESION)
----------------
3

SQL> select count(rowid) from t1;

COUNT(ROWID)
------------
4

Hasta aquí no hemos visto nada nuevo. Pero que sucede si incluimos un registro con valores nulos?.

SQL> insert into t1 values('&nombre','&profesion');
Enter value for nombre:
Enter value for profesion:
old 1: insert into t1 values('&nombre','&profesion')
new 1: insert into t1 values('','')

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;



SQL> select count(*) from t1;

COUNT(*)
----------
5

SQL> select count(rowid) from t1;

COUNT(ROWID)
------------
5

SQL> select count(nombre) from t1;

COUNT(NOMBRE)
-------------
4

Como pueden observar hacer el conteo utilizando el asterisco o la seudo-columna “rowid” en conjunto con la función “count”, toma en consideración el registro nulo incluido. Si lo hacemos haciendo referencia con el nombre de la columna, no lo toma en cuenta.

4 comentarios:

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar