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
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
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
La cláusula DISTINCT se utiliza para que no cuente los valores duplicados. El resultado es el siguiente:
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.
Java Web: Problemas con el puerto 8080 - GUSTAVO CORONEL
PROBLEMA
El puerto 8080 lo utilizan por defecto los servidores JEE como GlassFish, Tomcat y JBoss para las aplicaciones Web.
Normalmente no deberíamos tener ningún problema si utilizamos uno de estos contenedores y trabajamos con MySQL (Puerto 3306) y SQL Server (Puerto 1433).
El problema se presenta en las siguientes situaciones:
Si queremos utilizar dos servidores JEE al mismo tiempo en la misma máquina.
Si queremos utilizar Oracle XE.
SOLUCIÓN
La solución está en configurar cada uno de estos servidores Java EE con un puerto diferente, en algunos casos se puede optar por cambiar el puerto de Oracle XE.
Desde este enlace tienen acceso a las bases de datos ejemplo que utilizo en mis cursos y también en mis libros. Estan para los motores mas conocidos: MySQL, SQL Server y Oracle.
En muchas ocaciones necesitamos una base de datos ejemplo para desarollar algún ejercicio, algún demo, etc.
El siguiente enlace nos permite tener acceso a algunas bases de datos que utilizo en mis cursos o talleres, etc.