ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

SQL GROUP BY


Enviado por   •  11 de Noviembre de 2014  •  1.567 Palabras (7 Páginas)  •  208 Visitas

Página 1 de 7

Agrupación de datos (SQL GROUP BY)

En esta lección vamos a continuar hablando de la totalización de datos, ya que esta es un caso particular de la agrupación de datos, es decir, cuando usted totaliza datos de una tabla, en realidad está totalizando datos dentro de un solo y único grupo. De ahí que todos los ejemplos de totalización mostrados en la lección anterior devuelvan una sola y única fila.

Si logró asimilar lo que expone la lección 6, usted puede responder a la pregunta: ¿cuantos empleados hay? La respuesta es en realidad el total de registros de un solo grupo que podemos llamar: empleados. Puede responder también a la pregunta: ¿cuantos hombres hay? La respuesta no deja de ser el total de registros de un solo grupo que podemos llamar: hombres. Y podríamos seguir totalizando datos así, construyendo consultas SQL que devuelven una sola fila con el total de un solo grupo de registros, de manera que para totalizar por ejemplo el número de empleados por edades, deberíamos construir tantas consultas como grupos o rango de edades queramos evaluar. No parece práctico, ¿no sería más razonable construir una sola consulta SQL que en lugar de devolver una sola fila con el total de un solo grupo, devolviese varias filas, una por cada grupo, donde cada fila exprese el total de su grupo?

Supongamos por ejemplo una clase de alumnos, usted puede preguntarse: ¿cuantos alumnos hay?, y la respuesta es un solo dato que hace referencia a un solo grupo que podemos llamar: alumnos. Ahora dividamos la clase en dos grupos de manera que uno lo formen las chicas y otro los chicos. Una vez formados los dos grupos puede preguntarse: ¿cuantos alumnos hay en cada uno?, y la respuesta son dos datos, uno para cada grupo. El resultado es en realidad una totalización por grupos. Primero usted establece los grupos por sexo y luego totaliza la cantidad de miembros de cada uno. Pues bien, el SQL permite agrupar totales mediante la cláusula: GROUP BY.

En la lección anterior se dijo que no tiene sentido acompañar campos de tabla con funciones de totalización en una misma consulta SQL. Esto es así, sin embargo existe una excepción: usted puede acompañar un campo de tabla con funciones de totalización si su propósito es agrupar totales por ese campo, en cuyo caso deberá construir una consulta SQL para ese fin. El número de grupos resultantes dependerá de los distintos valores que existen para ese campo en el grupo de registros seleccionado.

Cláusula GROUP BY

Tenemos nuestra ya conocida tabla EMPLEADOS:

ID_EMPLEADO NOMBRE APELLIDOS F_NACIMIENTO SEXO CARGO SALARIO

1 Carlos Jiménez Clarín 1985-05-03 H Mozo 1500

2 Elena Rubio Cuestas 1978-09-25 M Secretaria 1300

3 José Calvo Sisman 1990-11-12 H Mozo 1400

4 Margarita Rodríguez Garcés 1992-05-16 M Secretaria 1325.5

Construyamos una consulta que nos devuelva el total de empleados por sexo. Esto se consigue con una nueva cláusula: GROUP BY, en consecuencia debemos añadir una cuarta pregunta a las preguntas de construcción:

• ¿Qué datos nos piden?

El número de empleados.

• ¿Dónde están los datos?

En la tabla empleados

• ¿Qué requisitos deben cumplir los registros?

Ninguno, necesitamos que intervengan todos los registros.

• ¿Cómo debemos agrupar los datos?

Por sexo.

Consulta SQL:

Código: Select SEXO , count(*) as EMPLEADOS from EMPLEADOS group by SEXO

Resultado:

SEXO EMPLEADOS

H 2

M 2

Observe que el resultado de la consulta devuelve dos filas, una para los hombres y otra para las mujeres, cada fila indica el número de empleados de su grupo. Advierta como los grupos resultantes son dos porque los distintos valores del campo SEXO en los registros seleccionados son dos: "H" y "M"

En general, cuando acompañamos uno o más campos de tabla con funciones de totalización, estos campos deberán formar parte de la cláusula GROUP BY. Un campo por el que agrupamos puede omitirse en la cláusula SELECT, aunque entonces, como puede apreciarse en el próximo ejemplo, ignoramos a que grupo representa cada fila de resultado.

Código: Select count(*) as EMPLEADOS from EMPLEADOS group by SEXO

EMPLEADOS

2

2

Pero si un campo aparece en la cláusula SELECT junto con funciones de totalización, entonces debemos forzosamente agrupar por ese campo, o lo que es lo mismo, debe formar parte de la cláusula GROUP BY.

La palabra clave DISTINCT

Este es un buen momento para hacer un paréntesis en la agrupación de datos y presentar la palabra clave: DISTINCT.

Con ella podemos eliminar filas redundantes de un resultado SQL, por lo que permite obtener los distintos valores de un campo existentes en una tabla o grupo de registros seleccionados.

Por ejemplo, ¿qué valores distintos existen en el campo SEXO de la tabla empleados?:

Código: Select distinct SEXO from EMPLEADOS

Resultado:

SEXO

H

M

Si al hacer DISTINCT en una consulta SQL sobre un campo el motor SQL devuelve por ejemplo dos filas, entonces al agrupar por ese campo un cálculo de totalización también devolverá dos filas, obviamente ambas consultas deben tener la misma cláusula WHERE, es decir, deben operar sobre el mismo grupo de registros.

En general pondremos la palabra clave DISTINCT delante de la lista de campos de la cláusula SELECT para eliminar las filas de resultados duplicadas o redundantes.

Código: Select distinct campo_1 , campo_2 , ... , campo_n from tabla

***

Para seguir viendo el potentísimo recurso SQL que es la agrupación de datos, vamos a suponer que usted gestiona un centro de acogida de mascotas, a él llegan perros y gatos abandonadas o de gente que no puede hacerse cargo. Para cada nueva mascota que llega al centro creamos un nuevo registro en la tabla MASCOTAS. Cuando una mascota es acogida por alguien, damos el registro de baja para indicar que esa mascota ha abandonado el centro.

Diseño de la tabla MASCOTAS:

Field Type Null Key Default Extra

ID_MASCOTA int(11) NO PRI

NOMBRE varchar(30) NO

ESPECIE varchar(1) NO

SEXO varchar(1) NO

...

Descargar como (para miembros actualizados) txt (11 Kb)
Leer 6 páginas más »
Disponible sólo en Clubensayos.com