Where cláusula
* Propósito: Filtra filas antes Cualquier operación de agregación (como `Sum`,` AVG`, `Count`, etc.).
* se aplica a: Filas individuales.
* Condiciones: Típicamente implica comparaciones y operadores lógicos que operan en columnas individuales dentro de la tabla.
* Ejemplo:
`` `SQL
Seleccionar * de los clientes donde país ='USA';
`` `` ``
Esta consulta recupera a todos los clientes de la tabla de 'clientes' donde la columna 'país' es igual a 'USA'.
Tener cláusula
* Propósito: Filtra filas después de Operaciones de agregación.
* se aplica a: Los resultados de la agregación (grupo por).
* Condiciones: Por lo general, implica comparaciones de valores agregados utilizando funciones agregadas (por ejemplo, `suma (precio)`, `AVG (Age)`, `Count (*)`) en combinación con operadores lógicos.
* Ejemplo:
`` `SQL
Seleccione City, AVG (Age) como promedio_age
De los clientes
Grupo de la ciudad
Tener promedio_age> 30;
`` `` ``
Esta consulta agrupa a los clientes de 'City' y calcula la edad promedio para cada ciudad. Luego, filtra los resultados para mostrar solo las ciudades donde la edad promedio es mayor que 30.
Diferencias clave en una copa de nuez:
* Tiempo: 'Where` filtros antes de la agregación,' tener 'filtros después.
* Alcance: 'Where' funciona en filas individuales, 'tener' funciona en resultados agregados.
* Condiciones: 'Where' usa condiciones en columnas individuales, 'tener' usa condiciones en valores agregados.
Cuándo usar cada cláusula:
* Use `Where` cuando desea filtrar datos en función de los valores de la fila individual antes de que ocurra cualquier agregación.
* Use `tener 'cuando desee filtrar resultados agregados (como datos agrupados) en función de las condiciones que involucran valores agregados.
nota: Puede usar las cláusulas `wher` y` tener 'en la misma consulta, pero' Where` se aplica primero para filtrar las filas utilizadas para la agregación, y luego 'tener' se usa para filtrar los resultados agregados.