SQL avanzado
No hace mucho creé un tutorial para principiantes de SQL, puedes leerlo aquí . Hoy es el momento de informarle sobre temas más avanzados, como los operadores GROUP BY y HAVING, la instrucción MERGE y los procedimientos almacenados.
AGRUPAR POR
La cláusula GROUP BY en SQL se usa para agrupar filas en un conjunto de resultados en función de una o más columnas. Por lo general, se usa junto con funciones agregadas como COUNT, SUM, AVG, MIN y MAX para calcular valores para cada grupo.
SELECT category, SUM(sales)
FROM orders
GROUP BY category;
Otro ejemplo:
SELECT department, COUNT(employee_id)
FROM employees
GROUP BY department;
Es importante tener en cuenta que debe utilizar funciones agregadas en cualquier columna que elija que no esté cubierta por la cláusula GROUP BY para evitar recibir un error. Además, es fundamental recordar que las columnas de la cláusula GROUP BY son las que definen los grupos; el orden de las columnas en la instrucción SELECT no influye en el conjunto de resultados.
TENIENDO
En función de las condiciones de la función de agregación, los grupos de filas de un conjunto de resultados se pueden filtrar mediante la cláusula HAVING de SQL. Por lo general, se combina con la cláusula GROUP BY para eliminar grupos que no se ajustan a requisitos particulares.
Por ejemplo, considere la siguiente consulta SQL que selecciona las ventas totales para cada categoría de producto en una ordertabla de muestra y solo devuelve categorías que tienen ventas totales superiores a 1000:
SELECT category, SUM(sales)
FROM orders
GROUP BY category
HAVING SUM(sales) > 1000;
Otro ejemplo:
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING COUNT(employee_id) > 5;
Similar a la cláusula WHERE, la cláusula HAVING se usa para filtrar grupos después de que la cláusula GROUP BY los haya producido y se hayan aplicado funciones agregadas.
UNIR
La instrucción SQL MERGE se usa para actualizar o insertar datos en una tabla de destino en función de los datos de una tabla de origen, o para combinar datos de dos o más tablas en una sola tabla. Se utiliza con frecuencia como alternativa a las declaraciones que combinan INSERTAR, ACTUALIZAR y ELIMINAR.
Sintaxis:
MERGE INTO target_table
USING source_table
ON (join_condition)
WHEN MATCHED THEN
UPDATE SET target_table.column1 = source_table.column1, ...
WHEN NOT MATCHED THEN
INSERT (column1, column2, ...)
VALUES (source_table.column1, source_table.column2, ...)
MERGE INTO products
USING prices
ON (products.product_id = prices.product_id)
WHEN MATCHED THEN
UPDATE SET products.price = prices.price;
MERGE INTO employees
USING temp_employees
ON (employees.employee_id = temp_employees.employee_id)
WHEN MATCHED THEN
UPDATE SET employees.salary = temp_employees.salary
WHEN NOT MATCHED THEN
INSERT (employee_id, first_name, last_name, department, salary)
VALUES (temp_employees.employee_id, temp_employees.first_name, temp_employees.last_name, temp_employees.department, temp_employees.salary);
Algunos sistemas de administración de bases de datos, como MySQL y SQLite, no admiten la declaración MERGE, por lo que debe usar la combinación de las declaraciones INSERT, UPDATE y DELETE en su lugar.
El comando MERGE debe probarse en un pequeño subconjunto de datos antes de usarse en toda la tabla, ya que podría tener un gran impacto en el rendimiento de las tablas grandes.
Procedimientos almacenados
Un grupo precompilado de instrucciones SQL que se guardan en una base de datos como un procedimiento almacenado. A menudo se emplean para llevar a cabo una tarea específica o un conjunto de actividades, como obtener información de una base de datos o hacer operaciones matemáticas complejas. En comparación con la ejecución de numerosas instrucciones SQL independientes, los procedimientos almacenados son más versátiles y efectivos, ya que pueden recibir parámetros de entrada y devolver valores de salida.
Aquí hay un ejemplo de un procedimiento almacenado simple que recupera todas las filas de una tabla employees:
CREATE PROCEDURE GetAllEmployees
AS
BEGIN
SELECT * FROM employees;
END
EXEC GetAllEmployees;
Apoya nuestra publicación siguiéndola
Consulte también los siguientes artículos.
Preguntas y respuestas de la entrevista de Java 8 Stream API
![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































