Agrupación avanzada

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.

1
Tarea
Módulo 4. Working with databases,  nivel 2lección 4
Bloqueada
task0245
task0245
1
Tarea
Módulo 4. Working with databases,  nivel 2lección 4
Bloqueada
task0246
task0246
1
Tarea
Módulo 4. Working with databases,  nivel 2lección 4
Bloqueada
task0247
task0247
1
Tarea
Módulo 4. Working with databases,  nivel 2lección 4
Bloqueada
task0248
task0248
1
Tarea
Módulo 4. Working with databases,  nivel 2lección 4
Bloqueada
task0249
task0249
1
Tarea
Módulo 4. Working with databases,  nivel 2lección 4
Bloqueada
task0250
task0250
1
Tarea
Módulo 4. Working with databases,  nivel 2lección 4
Bloqueada
task0251
task0251
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios