SQL Server - Agrupando datos

SQL SERVER - AGRUPANDO DATOS
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
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:
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.



Java Web: Problemas con el puerto 8080

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:

  1. Si queremos utilizar dos servidores JEE al mismo tiempo en la misma máquina.
  2. 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.

CAMBIAR PUERTO DE ORACLE XE

1.- Cargamos la consola SQL*Plus

C:\Users\Gustavo> sqlplus /nolog

2.- Iniciamos sesión como super usuario.

SQL> connect / as sysdba
Connected.

3.- Verificamos el puerto actual.

SQL> select dbms_xdb.gethttpport from dual;

GETHTTPPORT
-----------
       8080

4.- Cambiamos el puerto a 8090.

SQL> begin
  2     dbms_xdb.sethttpport('8090');
  3  end;
  4  /
PL/SQL procedure successfully completed.

4.- Verificar el nuevo puerto.

SQL> select dbms_xdb.gethttpport  from dual;
GETHTTPPORT
-----------
       8090

Listo, Oracle XE ya no dará problemas.

CAMBIAR PUERTO EN GLASSFISH

Si estas trabajando con NetBeans y quieres cambiar el puerto de GlassFish el procedimiento es el siguiente:

1.- Desde la vista Services debes acceder a la ventana de propiedades del GlassFish, como se muestra en la siguiente imagen:

2.- Copiamos la ruta de la carpeta del dominio.

3.- En el explorador de archivos, nos dirigimos a la carpeta del dominio, 

4.- Ingresamos a la carpeta domain1, luego a la carpeta config, y cargamos el archivo domain.xml en un editor de texto.

5.- En la fila 219 cambiamos el puerto 8080 por 8083, grabamos el archivo y eso sería todo.

CAMBIAR PUERTO DE TOMCAT EN NETBEANS

Si estas trabajando con NetBeans y quieres cambiar el puerto de Tomcat el procedimiento es el siguiente:

1.- Desde la vista Services debes debes cargar la ventana de propiedades, como se muestra en la siguiente imagen:

2.- En la ventana de propiedades debes cambiar el puerto 8080 por 8084, cierras la ventana y eso sería todo.

CAMBIAR PUERTO DE TOMCAT EN ECLIPSE

Si estas trabajando con Eclipse y quieres cambiar el puerto de Tomcat, el procedimiento es el siguiente:

1.- En la vista Servers y abres la ventana de configuración del servidor, como se muestra en la siguiente figura.

2.- En la vista de configuración del servidor cambias el puerto 8080 por 8085, y grabas los cambios, como se muestra en la siguiente figura.

VIDEO TUTORIAL

Finalmente, tienen el video tutorial.




Instalación de Oracle 11g R2

INSTALACIÓN DE ORACLE 11G R2
APLICACIÓN CLIENTE-SERVIDOR CON JAVA
Haz click aquí para acceder al código fuente
INSTALACION DE ORACLE 11G R2
VIDEO DE INSTALACION DE ORACLE XE 11G
APLICACIÓN WEB CON SPRING FRAMEWORK

En esta sección te presento un video de una aplicación web desarrollada SPRING FRAMEWORK y MYSQL.

Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.


Haz click aquí para acceder al código fuente




POO con C# - Laboratorio 05

POO con C# - Laboratorio 05 POO con C#


Laboratorio Nro. 05

POO_Laboratorio_05                                                                                            

CODIGO FUENTE

En esta sección te presento un video de una aplicación CLIENTE-SERVIDOR desarrollada con Java y Oracle.

Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.


Haz click aquí para acceder al código fuente




1ra Practica de laboratorio de POO con C#

1ra Practica de laboratorio de POO con C# POO_Practica_Dirigida_01

CÓDIGO FUENTE

En esta sección te presento un video de una aplicación web desarrollada SPRING FRAMEWORK y MYSQL.

Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.




Pool de Conexiones con MySQL, GlassFish y NetBeans

En este artículo explico con detalle como crear un pool de conexiones en GlassFish, y como utilizarlo desde una aplicación Java Web.
EL ARTICULO
Pool de Conexiones con MySQL, GlassFish y NetBeans
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.



Base de Datos Ejemplo

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.

Acceso a las bases de datos
Espero que les sea útil.



Taller Virtual de Spring Framework

Acceso al Taller Virtual