Compartir a través de


Trabajar con columnas en consultas agregadas (Visual Database Tools)

se aplica a:sql Server

Al crear consultas agregadas, el diseñador de consultas y vistas de realiza 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 hace que la columna sea parte de la cláusula GROUP BY de modo que no intente mostrar involuntariamente 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 cláusula GROUP BY. Las columnas no se agregan automáticamente a la cláusula GROUP BY si ya forman parte de una función de agregado.

    Si no desea que una columna determinada forme parte de la cláusula GROUP BY, 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 le impedirá elegir una opción que pueda dar lugar a una consulta que no se ejecutará.

  • 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 cláusula GROUP BY 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 de la cuadrícula (porque aún no se ha especificado una consulta de agregado), la condición de búsqueda se coloca en la cláusula WHERE.

  • Si ya está en una consulta de agregado y ha seleccionado la opción Where en la columna Group By, la condición de búsqueda se coloca en la cláusula WHERE.

  • Si la columna Group By contiene cualquier valor distinto de Where, la condición de búsqueda se coloca en la cláusula HAVING.

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 cláusula WHERE) o para determinar qué resultados agrupados aparecen en la salida final (una cláusula HAVING).

  • Las columnas de datos individuales pueden aparecer en la cláusula WHERE o HAVING, en función de cómo se usen en otra parte de la consulta.

  • Las cláusulas WHERE 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 una cláusula WHERE incluso si no forma parte de la cláusula GROUP BY 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 cláusula GROUP BY o una función de agregado, la condición de búsqueda puede aparecer como una cláusula WHERE o una cláusula HAVING, 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 cláusula HAVING.

Consulte también

resumen de los resultados de la consulta (Visual Database Tools)
ordenar y agrupar resultados de consulta (Visual Database Tools)