Unidad 5. Consultas de resumen (II)


5.3. La función COUNT


COUNT ({[ALL|DISTINCT] expresion | * } )

Expresion puede ser de cualquier tipo excepto text, image o ntext. No se permite utilizar funciones de agregado ni subconsultas. El tipo de dato devuelto es int.
Si el número de valores devueltos por expresion es superior a 231-1, COUNT genera un error, en ese caso hay que utilizar la función COUNT_BIG.

La función cuenta los valores distintos de NULL que hay en la columna. La palabra ALL indica que se tienen que tomar todos los valores de la columna, mientras que DISTINCT hace que se consideren todas las repeticiones del mismo valor como uno solo. Estos parámetros son opcionales, por defecto se considera ALL.

Por ejemplo:


SELECT COUNT(region) FROM oficinas; 

Devuelve 9 porque tenemos nueve valores no nulos en la columna region. A la hora de interpretar un COUNT es conveniente no olvidar que cuenta valores no nulos, por ejemplo si interpretáramos la sentencia tal cual se lee, “cuántas regiones tenemos en oficinas”  sería erróneo, realmente estamos obteniendo cuántas oficinas tienen una región asignada.
 


SELECT COUNT(DISTINCT region) FROM oficinas;

Devuelve 4 porque tenemos cuatro valores distintos, no nulos, en la columna región, los valores repetidos los considera sólo una vez. Ahora sí nos devuelve cuántas regiones tenemos en oficinas.

Si utilizamos * en vez de expresión, devuelve el número de filas del origen que nos quedan después de ejecutar la cláusula WHERE.
 
COUNT(*) no acepta parámetros y no se puede utilizar con DISTINCT. COUNT(*) no requiere un parámetro expression porque, por definición, no utiliza información sobre ninguna columna específica. En el recuento se incluyen las filas que contienen valores NULL.


SELECT COUNT(*) FROM empleados WHERE oficina=12;

Obtiene el número de empleados asignados a la oficina 12.

Si tenemos un COUNT(columna) y columna no contiene valores nulos, se obtiene el mismo resultado que COUNT(*)  pero el COUNT(*) es más rápido por lo que en este caso hay que utilizarlo en vez de COUNT(columna).

Por ejemplo:


SELECT COUNT(*) FROM empleados WHERE oficina IS NOT NULL;

Es mejor que:


SELECT COUNT(oficina) FROM empleados WHERE oficina IS NOT NULL;

Las dos nos devuelven el número de empleados que tienen una oficina asignada pero la primera es mejor porque se calcula más rápidamente.

Para practicar puedes realizar este Ejercicio La función COUNT.

5.4. La función COUNT_BIG

Funciona igual que la función COUNT. La única diferencia entre ambas funciones está en los valores devueltos, COUNT_BIG siempre devuelve un valor de tipo bigint y por lo tanto admite más valores de entrada, no está limitado a  231-1 valores de entrada como COUNT.

5.5. La función MAX


MAX ([ALL|DISTINCT] expression) 

Devuelve el valor máximo de la expresión sin considerar los nulos.
MAX se puede usar con columnas numéricas, de caracteres y de datetime, pero no con columnas de bit. No se permiten funciones de agregado ni subconsultas.
Utilizar DISTINCT no tiene ningún sentido con MAX (el valor máximo será el mismo si consideramos las repeticiones o no) y sólo se incluye para la compatibilidad con SQL-92.
Por ejemplo:


SELECT SUM(ventas) AS VentasTotales,  MAX(objetivo) AS MayorObjetivo

FROM oficinas; 

Devuelve 9 porque tenemos nueve valores no nulos en la columna region. A la hora de interpretar un COUNT es conveniente no olvidar que cuenta valores no nulos, por ejemplo si interpretáramos la sentencia tal cual se lee, “cuántas regiones tenemos en oficinas”  sería erróneo, realmente estamos obteniendo cuántas oficinas tienen una región asignada.

Para practicar puedes realizar este Ejercicio La función MAX.

5.6. La función MIN


MIN ([ALL|DISTINCT] expression)  

Devuelve el valor mínimo de la expresión sin considerar los nulos.
MIN se puede usar con columnas numéricas, de caracteres y de datetime, pero no con columnas de bit. No se permiten funciones de agregado ni subconsultas.
Utilizar DISTINCT no tiene ningún sentido con MIN (el valor mínimo será el mismo si consideramos las repeticiones o no) y sólo se incluye para la compatibilidad con SQL-92.

Febrero-2010
Pág. 5.2

Atrás  Inicio  Adelante






.