Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
se aplica a:sql Server
Al crear consultas de agregado, las herramientas del Diseñador de consultas y vistas (Visual Database Tools) hacen ciertas suposiciones para que pueda construir una consulta válida. Por ejemplo, si va a crear una consulta de agregado y marcar una columna de datos para la salida, el Diseñador de consultas y vistas convierte automáticamente la parte de columna de la GROUP BY cláusula para que no intente mostrar accidentalmente el contenido de una fila individual en un resumen.
Uso de Group By
El Diseñador de consultas y vistas usa las siguientes directrices para trabajar con columnas:
Al elegir la opción Agrupar por o agregar una función de agregado a una consulta, todas las columnas marcadas para la salida o usadas para la ordenación se agregan automáticamente a la
GROUP BYcláusula . Las columnas no se agregan automáticamente a laGROUP BYcláusula si ya forman parte de una función de agregado.Si no desea que una columna determinada forme parte de la
GROUP BYcláusula , debe cambiarla manualmente seleccionando una opción diferente en la columna Agrupar por del panel Criterios. Sin embargo, el Diseñador de consultas y vistas no impide elegir una opción que pueda dar lugar a una consulta que no se ejecute.Si agrega manualmente una columna de salida de consulta a una función de agregado en el panel Criterios o SQL, el Diseñador de consultas y vistas no quita automáticamente otras columnas de salida de la consulta. Por lo tanto, debe quitar las columnas restantes de la salida de la consulta o convertirlas en parte de la
GROUP BYcláusula o de una función de agregado.
Al escribir una condición de búsqueda en la columna Filtro del panel Criterios, el Diseñador de consultas y vistas sigue estas reglas:
Si no se muestra la columna Group By de la cuadrícula (porque aún no ha especificado una consulta de agregado), la condición de búsqueda se coloca en la
WHEREcláusula .Si ya está en una consulta de agregado y ha seleccionado la opción Where in the Group By columna, la condición de búsqueda se coloca en la
WHEREcláusula .Si la columna Group By contiene cualquier valor distinto de Where, la condición de búsqueda se coloca en la
HAVINGcláusula .
Uso de las cláusulas HAVING y WHERE
Los principios siguientes describen cómo puede hacer referencia a columnas en una consulta de agregado en condiciones de búsqueda. En general, puede usar una columna en una condición de búsqueda para filtrar las filas que se deben resumir (una WHERE cláusula) o para determinar qué resultados agrupados aparecen en la salida final (una HAVING cláusula).
Las columnas de datos individuales pueden aparecer en la
WHEREcláusula oHAVING, en función de cómo se usen en otra parte de la consulta.WHERELas cláusulas se usan para seleccionar un subconjunto de filas para resumir y agrupar y, por tanto, se aplican antes de que se realice cualquier agrupación. Por lo tanto, puede usar una columna de datos en unaWHEREcláusula incluso si no forma parte de laGROUP BYcláusula o está contenida en una función de agregado. Por ejemplo, la siguiente instrucción selecciona todos los títulos que cuestan más de 10,00 USD y calcula el precio promedio de estos.SELECT AVG(price) FROM titles WHERE price > 10;Si crea una condición de búsqueda que implica una columna que también se usa en una
GROUP BYcláusula o una función de agregado, la condición de búsqueda puede aparecer como unaWHEREcláusula o unaHAVINGcláusula ; puede decidir qué al crear la condición. Por ejemplo, la siguiente instrucción crea un precio medio para los títulos de cada publicador y, a continuación, muestra el promedio de los publicadores en los que el precio medio es mayor que 10,00 USD:SELECT pub_id, AVG(price) FROM titles GROUP BY pub_id HAVING (AVG(price) > 10);Si usa una función de agregado en una condición de búsqueda, la condición implica un resumen y, por tanto, debe formar parte de la
HAVINGcláusula .