Introducción
Muchas veces tenemos la necesidad de presentar reportes con datos estadísticos simples, como por ejemplo con respecto al resultado de una evaluación:
- Cuantos alumnos tomaron la evaluación
- La nota mayor.
- La nota menor.
- La nota promedio.
- La cantidad de aprobados
Estos cálculos se pueden ampliar a todas las evaluaciones de un curso, o tal vez aplicarlos a todas las evaluaciones de todos los cursos.
También se puede aplicar a otros campos, por ejemplo una tienda por departamentos podría necesitar información estadística sobre las preferencias de sus clientes para aplicar un marketing personalizado, el área de compras necesita cierta información para poder negociar con los proveedores, y así podemos encontrar muchos casos en los que se necesita información estadística para tomar mejores decisiones.
Para obtener esta información directamente de la base de datos debemos aplicar funciones agregadas y agrupamiento de datos en la sentencia SELECT.
Tabla de Muestra
Para los ejemplos utilizaremos la siguiente tabla:
TABLA: NOTAS | |||
---|---|---|---|
Curso | Alumno | Practica | Nota |
Java | Pedro | P1 | 16 |
Java | Karla | P1 | 12 |
Java | Doris | P1 | 13 |
Oracle | Manuel | P1 | 15 |
Oracle | Pedro | P1 | 18 |
Oracle | Karla | P1 | 10 |
Oracle | Doris | P1 | 13 |
Java | Manuel | P2 | 14 |
Java | Pedro | P2 | 17 |
Java | Karla | P2 | 15 |
Java | Doris | P2 | 16 |
Funciones Agregadas
Las funciones agregadas permiten realizar cálculos estadístico, se aplican sobre las columnas de una tabla o expresiones a través de todas las filas de una tabla.
Las más utilizadas son:
- COUNT: Contar filas o valores no nulos.
- MAX: Obtener el valor máximo de una columna.
- MIN: Obtener el valor mínimo de una columna.
- SUM: Obtener la suma de los valores de una columna, no considera los nulos.
- AVG: Obtener el promedio de los valores de una columna, no considera los nulos
Ejemplo 1
Cuantos alumnos han rendido la práctica 1 de Java.
select COUNT(Alumno) Alumnos
from dbo.NOTAS
where Curso = 'Java' and Practica = 'P1';
GO
from dbo.NOTAS
where Curso = 'Java' and Practica = 'P1';
GO
El resultado es el siguiente:
Alumnos ----------- 3
Ejemplo 2
Cuantos alumnos han aprobado la práctica 1 de Oracle.
select COUNT(Alumno) Alumnos
from dbo.NOTAS
where Curso = 'Oracle'
and Practica = 'P1'
and nota >= 12;
GO
from dbo.NOTAS
where Curso = 'Oracle'
and Practica = 'P1'
and nota >= 12;
GO
El resultado es el siguiente:
Alumnos ----------- 3
GROUP BY
La cláusula GROUP BY permite agrupar datos y obtener datos estadísticos de cada grupo.
Cada grupo se resume en una sola fila.
Ejemplo 3
Obtener la cantidad de alumnos de cada curso.
select Curso, COUNT(distinct Alumno) Alumnos
from dbo.NOTAS
group by Curso;
GO
from dbo.NOTAS
group by Curso;
GO
La cláusula DISTINCT se utiliza para que no cuente los valores duplicados. El resultado es el siguiente:
Curso Alumnos --------------- ----------- Java 4 Oracle 4
Ejemplo 4
Cuántos alumnos han rendido cada práctica por cada uno de los cursos.
select Curso, Practica, COUNT(Alumno) Alumnos from dbo.NOTAS group by Curso, Practica order by 1, 2; GO
La cláusula ORDER BY se utiliza para ordenar el resultado, en este se está ordenando por las dos primeras columnas. El resultado es el siguiente:
Curso Practica Alumnos --------------- -------- ----------- Java P1 3 Java P2 4 Oracle P1 4
HAVING
La cláusula HAVING se utiliza para hacer filtro de grupos, por ejemplo, se necesita saber quiénes son los alumnos con promedio mayor o igual a 18, o tal vez, se necesita saber el cliente que más consume con tarjeta VISA.
Ejemplo 5
Que alumnos han rendido solo dos prácticas.
select Alumno, COUNT(Practica) Practicas from dbo.NOTAS group by Alumno having COUNT(Practica) = 2; GO
Las funciones que se utilicen en la cláusula SELECT son las que debemos utilizar en la cláusula HAVING. El resultado es el siguiente:
Alumno Practicas --------------- ----------- Manuel 2
Video
A continuación tienes un video tutorial donde te explico todos estos temas.
CÓDIGO FUENTE
En esta sección te presento un video de una aplicación CLIENTE-SERVIDOR.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.
No hay comentarios:
Publicar un comentario