2.2. Agrupamiento de registros

agrupar
Img 13. Pasos del diseño de consultas.
Agrupación de registros.
 
 
El diseño de consultas sigue siempre los mismos pasos. Las cláusulas que admite el comando SELECT permiten ordenar los registros (ORDER BY), especificar las condiciones de búsqueda (WHERE), establecer los alias (AS) y...
agrupar los registros y establecer las condiciones de agrupación (GROUP BY).
 
 
 
 
 
 
 
 
 
Icono IDevice Actividad

La cláusula GROUP BY (... HAVING) permite agrupar en un solo registro todos aquellos cuyo valor del campo indicado sea idéntico. Opcionalmente permite seleccionar solamente los registros que cumplan una condición con la cláusula HAVING.

 

Se usa en combinación con funciones de agregado para añadir campos de resumen de los registros agregados.


La cláusula GROUP BY debe contener todos los campos nombrados en el comando SELECT, excepto el campo en el que se aplicará la función. Por este motivo, las consultas realizadas con GROUP BY suelen ser sencillas e incluir simplemente el campo que se desea agrupar y el que se desea resumir con una función.
Su sintaxis es:
SELECT Campo1, FUNCIÓN (Campo2) FROM Tabla WHERE Criterio GROUP BY Campo1
AV - Pregunta Verdadero-Falso


a) La cláusula GROUP BY muestra los registros agrupados según uno o varios campos como en los formularios.

Verdadero Falso


b) En la cláusula GROUP BY hay que indicar solamente el campo por el que se agruparán los registros.

Verdadero Falso


c) GROUP BY ordena los registros como ORDER BY pero no repite el campo indicado en la cláusula.

Verdadero Falso

Cuando en una consulta con GROUP BY sólo interesa el resumen en registros con valores determinados se usa la cláusula HAVING. Se suele definir está cláusula como el WHERE del GROUP BY, es decir, HAVING es a GROUP BY lo que WHERE es a SELECT.

Por ejemplo, se usa HAVING cuando además de consultar el número de pedidos enviados a cada provincia lo que se necesita es saber el número de pedidos enviados solamente a Madrid.

La sentencia se realiza introduciendo la claúsula HAVING después del campo de agrupación:

... GROUP BY Campo1 HAVING condición
Icono de iDevice Ejemplo o ejercicio resuelto

Ya dispones de una base de datos y de consultas diseñadas fácilmente mediante el asistente. Así que tienes una buena colección de sentencias SQL. Sólo tienes que editar las consultas en SQL y OOo Base te proporcionará la sentencia correctamente escrita.

En el tema 3 diseñaste la consulta Contar_pedidos como ejemplo del agrupamiento de registros. Edítala en vista SQL y comprueba que contiene la cláusula GROPU BY "Destinatario", puesto que la consulta cuenta los pedidos que ha realizado cada cliente, es decir, agrupa los registros por clientes (o destinatarios del pedido).
datos contar_pedidos

sql contar_pedidos

Img 14 y 15. Datos y vista SQL de consulta Contar_pedidos
Ejercicio.- Introduce la cláusula HAVING para que se visualicen únicamente los pedidos del cliente "empresa1"

Icono IDevice Objetivos

La cláusula HAVING también puede incluir criterios con operadores y funciones.

 

En el ejercicio anterior se podría haber seleccionado el registro cuyo valor del campo Total_pedido fuese mayor que 4. En este caso el resultado sería el registro:

having con función
sql having función

 

Img 18 y 19. Datos y vista SQL consulta Contar_pedidos modificada.

En esta web puedes encontrar más ejemplos: sql_having_sum