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;
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.
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.
Muchas gracias,
ResponderEliminarMe ha sido de gran utilidad
Gracias por el tip
ResponderEliminarCon gusto Oscar... un abrazo.
EliminarCon gusto amigos...
ResponderEliminar