Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
SQL: cláusula GROUP BY
Este tutorial de SQL explica cómo usar SQL Cláusula GROUP BY Con sintaxis y ejemplos.
describir
La cláusula SQL GROUP BY se puede usar en una instrucción SELECT para recopilar datos en varios registros y agrupar los resultados en una o más columnas.
sintaxis
La sintaxis de la cláusula GROUP BY en SQL es:
SELECT expression1, expression2, ... expression_n, aggregate_function (aggregate_expression) FROM tables [WHERE conditions] GROUP BY expression1, expression2, ... expression_n [ORDER BY expression [ ASC | DESC ]];
parámetro o parámetro
expresión1, expresión2, … expresión_n Expresiones que no están encapsuladas en funciones agregadas y deben incluirse en la cláusula GROUP BY al final de la instrucción SQL. Función_agregada Esta es una función agregada como la función SUM, COUNT, MIN, MAX o AVG. Expresión agregada Esta es la columna o expresión para la que se usará la función agregada. tabla La tabla de la que desea recuperar registros. Debe aparecer al menos una tabla en la cláusula FROM. La condición WHERE es opcional. Estas son las condiciones que se deben cumplir para seleccionar registros. La expresión ORDER BY es opcional. La expresión utilizada para ordenar los registros en el conjunto de resultados. Si se proporcionan varias expresiones, los valores deben estar separados por comas. ASC es opcional. ASC ordena el conjunto de resultados en orden ascendente de expresiones. Este es el comportamiento predeterminado si el proveedor no es ningún modificador. DESC opcional. DESC ordena el conjunto de resultados en orden descendente de expresiones.
Ejemplo de DDL/DML
Si desea seguir este tutorial, obtenga DDL para crear las tablas y DML para completar los datos. ¡Entonces pruebe los ejemplos en su propia base de datos!
Ejemplo: uso de GROUP BY con la función SUM
Veamos cómo usar la cláusula GROUP BY con la función SUM en SQL.
En este ejemplo, tenemos una tabla llamada empleados con los siguientes datos:
ID de empleado | apellido | nombre | salario | dept_id |
---|---|---|---|---|
1001 | Herrero | John | 62000 | 500 |
1002 | anderson | simple | 57500 | 500 |
1003 | el Monte Everest | Puntilla | 71000 | 501 |
1004 | Horvath | Jack | 42000 | 501 |
Ingrese la siguiente instrucción SQL:
SELECT dept_id, SUM(salary) AS total_salaries FROM employees GROUP BY dept_id;
Se seleccionarán 2 registros. Estos son los resultados que deberías ver:
dept_id | salario_total |
---|---|
500 | 119500 |
501 | 113000 |
En este ejemplo, usamos la función SUM para agregar todos los salarios para cada dept_id y alias el resultado de la función SUM como total_salaries. Debido a que dept_id no está encapsulado en la función SUM, debe aparecer en la cláusula GROUP BY.
Ejemplo: uso de GROUP BY con la función COUNT
Veamos cómo usar la cláusula GROUP BY con la función COUNT en SQL.
En este ejemplo, tenemos una tabla llamada productos con los siguientes datos:
ID del Producto | nombre del producto | categoria ID |
---|---|---|
1 | pera | 50 |
2 | plátano | 50 |
3 | mandarina | 50 |
4 | manzana | 50 |
5 | pan de molde | 75 |
6 | jamón | 25 |
7 | kleenex | nulo |
Ingrese la siguiente instrucción SQL:
SELECT category_id, COUNT(*) AS total_products FROM products WHERE category_id IS NOT NULL GROUP BY category_id ORDER BY category_id;
Se seleccionarán 3 registros. Estos son los resultados que deberías ver:
categoria ID | productos_totales |
---|---|
25 | 1 |
50 | 4 |
75 | 1 |
En este ejemplo, usamos la función COUNT para contar la cantidad de productos para cada id_categoría y alias el resultado de la función COUNT como total_products. Los excluimos filtrando cualquier valor de category_id en la cláusula WHERE. Debido a que category_id no está encapsulado en la función COUNT, debe aparecer en la cláusula GROUP BY.
Ejemplo: uso de GROUP BY con la función MIN
Veamos a continuación cómo usar la cláusula GROUP BY con la función MIN en SQL.
En este ejemplo, usaremos nuevamente la tabla de empleados con los siguientes datos:
ID de empleado | apellido | nombre | salario | dept_id |
---|---|---|---|---|
1001 | Herrero | John | 62000 | 500 |
1002 | anderson | simple | 57500 | 500 |
1003 | el Monte Everest | Puntilla | 71000 | 501 |
1004 | Horvath | Jack | 42000 | 501 |
Ingrese la siguiente instrucción SQL:
SELECT dept_id, MIN(salary) AS lowest_salary FROM employees GROUP BY dept_id;
Se seleccionarán 2 registros. Estos son los resultados que deberías ver:
dept_id | salario mínimo |
---|---|
500 | 57500 |
501 | 42000 |
En este ejemplo, usamos la función MIN para devolver el salario mínimo para cada dept_id y alias el resultado de la función MIN para el salario mínimo. Debido a que dept_id no está encapsulado en la función MIN, debe aparecer en la cláusula GROUP BY.
Ejemplo: uso de GROUP BY con la función MAX
Finalmente, veamos cómo usar la cláusula GROUP BY con la función MAX.
Usemos la tabla de empleados nuevamente, pero esta vez encuentre el salario más alto para cada dept_id:
ID de empleado | apellido | nombre | salario | dept_id |
---|---|---|---|---|
1001 | Herrero | John | 62000 | 500 |
1002 | anderson | simple | 57500 | 500 |
1003 | el Monte Everest | Puntilla | 71000 | 501 |
1004 | Horvath | Jack | 42000 | 501 |
Ingrese la siguiente instrucción SQL:
SELECT dept_id, MAX(salary) AS highest_salary FROM employees GROUP BY dept_id;
Se seleccionarán 2 registros. Estos son los resultados que deberías ver:
dept_id | sueldo mas alto |
---|---|
500 | 62000 |
501 | 71000 |
En este ejemplo, usamos la función MAX para devolver el salario más alto para cada dept_id y alias el resultado de la función MAX al salario más alto. La columna dept_id debe figurar en la cláusula GROUP BY porque no está incluida en la función MAX.