logo

Diferencia entre DONDE y TENER

Las cláusulas WHERE y HAVING se analizan en profundidad en este artículo. También se utilizan para filtrar registros en consultas SQL. La diferencia entre la cláusula WHERE y HAVING es la pregunta más común que se plantea durante una entrevista. La principal diferencia entre ellos es que la cláusula WHERE se usa para especificar una condición para filtrar registros antes de realizar cualquier agrupación, mientras que la cláusula HAVING se usa para especificar una condición para filtrar valores de un grupo. Antes de hacer la comparación, primero conoceremos estos SQL cláusulas.

DONDE vs TENER

Dónde cláusula

La cláusula WHERE en MySQL se usa con SELECT, INSERTAR , ACTUALIZAR , y BORRAR consultas para filtrar datos de la tabla o relación. Describe una condición específica al recuperar registros de una sola tabla o de varias tablas usando la cláusula JOIN. Si se cumple la condición especificada, devuelve el valor particular de la tabla. La cláusula WHERE coloca condiciones en las columnas seleccionadas.

La cláusula WHERE en MySQL también puede implementar los conectivos lógicos Y , O y NO. Se les conoce como la condición booleana que debe cumplirse. verdadero para recuperar los datos. Las expresiones de conectivos lógicos utilizan los operadores de comparación como operandos como<, ,>=, = y . Los operadores de comparación se utilizan habitualmente para comparar cadenas y expresiones aritméticas.

0.0625 como fracción

La siguiente sintaxis ilustra el uso de la cláusula WHERE:

 SELECT column_lists, FROM table_name WHERE conditions GROUP BY column_lists; 

Pongamos un ejemplo para entender esta cláusula. Supongamos que tenemos una tabla llamada empleados que contienen los siguientes datos:

DONDE vs TENER

Si queremos para obtener el detalle del empleado cuyas horas de trabajo son mayores a 9 , entonces podemos usar la declaración de la siguiente manera:

 mysql&gt; SELECT * FROM employees WHERE working_hour &gt; 9; 

Obtendremos el siguiente resultado donde podremos ver los detalles de los empleados cuyas horas de trabajo son superiores a 9:

comando de linux para zip
DONDE vs TENER

Si utilizamos la consulta anterior con el AGRUPAR POR cláusula, obtendremos el resultado diferente:

 mysql&gt; SELECT * FROM employees WHERE working_hour &gt; 9 GROUP BY name; 

Aquí está el resultado:

DONDE vs TENER

Cláusula TENER

Cláusula HAVING en MySQL utilizado junto con GROUP BY La cláusula nos permite especificar condiciones que filtran qué resultados de grupo aparecen en el resultado. Devuelve solo aquellos valores de los grupos en el resultado final que cumplen ciertas condiciones. También podemos usar las cláusulas WHERE y HAVING juntas durante la selección. En este caso, la cláusula WHERE primero filtra las filas individuales, luego las filas se agrupan, realiza cálculos agregados y, por último, la cláusula HAVING filtra los grupos.

Esta cláusula impone condiciones a los grupos creados por la cláusula GROUP BY. Se comporta como la cláusula WHERE cuando la declaración SQL no utiliza la palabra clave GROUP BY. Podemos usar las funciones agregadas (de grupo) como SUM, MIN, MAX, AVG y CONTAR sólo con dos cláusulas: SELECT y HAVING.

La siguiente sintaxis ilustra el uso de la cláusula HAVING:

 SELECT column_lists, aggregate_function (expression) FROM table_name WHERE conditions GROUP BY column_lists HAVING condition; 

Pongamos un ejemplo para entender esta cláusula. Aquí estamos considerando la misma tabla. empleados para demostración.

Si queremos para obtener el total de horas de trabajo de cada empleado cuyo tiempo de trabajo sea superior a 6 horas , entonces podemos usar la declaración de la siguiente manera:

 mysql&gt; SELECT name, SUM(working_hour) AS &apos;Total working hours&apos; FROM employees GROUP BY name HAVING SUM(working_hour) &gt; 6; 

Obtendremos el siguiente resultado donde podremos ver el total de horas de trabajo de cada empleado:

computadora inventada en qué año
DONDE vs TENER

Diferencias clave entre la cláusula WHERE y HAVING

Los siguientes puntos explican las principales diferencias entre base de datos y esquema:

  • La cláusula WHERE filtra filas individuales, mientras que la cláusula HAVING filtra grupos en lugar de una fila a la vez.
  • No podemos usar la cláusula WHERE con funciones agregadas porque funciona para filtrar filas individuales. Por el contrario, HAVING puede funcionar con funciones agregadas porque se utiliza para filtrar grupos.
  • Las operaciones de fila son manejadas por la cláusula WHERE, mientras que la cláusula HAVING maneja operaciones de columna para filas o grupos resumidos.
  • WHERE viene antes de GROUP BY, lo que significa que la cláusula WHERE filtra las filas antes de realizar cálculos agregados. HAVING viene después de GROUP BY, lo que significa que la cláusula HAVING filtra filas después de realizar cálculos agregados. En consecuencia, HAVING es más lento que WHERE en términos de eficiencia y debe evitarse siempre que sea posible.
  • Podemos combinar las cláusulas WHERE y HAVING en una consulta SELECT. En este caso, la cláusula WHERE se utiliza primero para filtrar filas individuales. Luego se agrupan las filas, se realizan cálculos agregados y, finalmente, se utiliza la cláusula HAVING para filtrar los grupos.
  • La cláusula WHERE recupera los datos deseados según la condición especificada. Por otro lado, la cláusula HAVING primero recupera los datos completos y luego se realiza la separación según la condición especificada.
  • Sin una declaración SELECT, no podemos usar la cláusula HAVING. Por el contrario, podemos usar WHERE con declaraciones SELECT, UPDATE y DELETE.
  • La cláusula WHERE es un filtro previo, mientras que la cláusula HAVING es un filtro posterior.

Cuadro comparativo DÓNDE y TENER

El siguiente cuadro comparativo explica sus principales diferencias de forma rápida:

Base de comparación Dónde cláusula Cláusula TENER
Definición Se utiliza para realizar filtración en filas individuales. Se utiliza para realizar filtración en grupos.
Básico Se implementa en operaciones de fila. Se implementa en operaciones de columna.
Obtención de datos La cláusula WHERE recupera los datos específicos de filas particulares según la condición especificada La cláusula HAVING primero recupera los datos completos. Luego los separa según la condición dada.
Funciones agregadas La cláusula WHERE no permite trabajar con funciones agregadas. La cláusula HAVING puede funcionar con funciones agregadas.
Actuar de La cláusula WHERE actúa como prefiltro. La cláusula HAVING actúa como un filtro posterior.
Usado con Podemos usar la cláusula WHERE con las declaraciones SELECT, UPDATE y DELETE. La cláusula HAVING solo se puede usar con la declaración SELECT.
AGRUPAR POR La cláusula GROUP BY viene después de la cláusula WHERE. La cláusula GROUP BY viene antes de la cláusula HAVING.

Conclusión

En este artículo, hemos hecho una comparación entre las cláusulas WHERE y HAVING. Aquí concluimos que ambas cláusulas funcionan de la misma manera al filtrar los datos, excepto que alguna característica adicional hace que la cláusula HAVING sea más popular. Podemos trabajar de manera eficiente con funciones agregadas en la cláusula HAVING mientras que WHERE no permite funciones agregadas.