CodeGym /Cursos /SQL & Hibernate /Agrupación avanzada

Agrupación avanzada

SQL & Hibernate
Nivel 2 , Lección 4
Disponible

5.1 Declaración HABER

Hay otro operador útil en SQL que se usa con GROUP BY, se llama HAVING.

En su significado, es completamente análogo al operador WHERE. Solo WHEREle permite establecer un filtro de fila antes de la agrupación y, con la ayuda, HAVINGpuede establecer un filtro que se aplica a los registros después de la agrupación.

La vista general de la consulta cuando se utiliza la agrupación y el filtrado de los resultados de la agrupación es la siguiente:

SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition

HAVINGsolo se puede usar si la solicitud contiene GROUP BY.

Escribamos una consulta donde mostramos el número de empleados contratados por año.

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year

Y el resultado de esta consulta:

año_alquiler total
2012 1
2013 1
2014 1
2015 2
2018 1

Y ahora excluimos de ella los años en que se contrataron uno o menos empleados. Ejemplo:

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
HAVING total > 1

Y el resultado de esta consulta:

año_alquiler total
2015 2

5.3 Orden de ejecución de sentencias

Para escribir consultas SQL correctas y eficientes, debe comprender cómo las ejecuta el servidor SQL.

El procedimiento para realizar acciones está estrictamente regulado y no depende de su deseo. No puede reorganizar los operadores y obtener un orden diferente.

La consulta SQL se ejecuta en varias etapas en este orden.

  1. Etapa 1: obtención de filas
    • Primero, se seleccionan todas las filas de la tabla especificada.
    • Luego se les agregan campos calculados.
    • Y luego, de todas las filas, solo quedan aquellas que satisfacen la condición.WHERE
  2. Etapa 2 - agrupación
    • A continuación, se aplica la agrupación a los resultados.
    • Durante la agrupación, campos como COUNT(*).
    • Finalmente, se aplica un filtro al resultado de la agrupación HAVING.
  3. Etapa 3 - clasificación
    • Las filas obtenidas en los pasos anteriores se ordenan usando ORDER BY.

Finalmente, el resultado se puede recortar con LIMITy OFFSET.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION