Compartilhar via


Trabalhar com colunas em consultas de agregação (Visual Database Tools)

aplica-se a: do SQL Server

Quando você cria consultas agregadas, as Ferramentas de Designer de Consulta e Exibição (Visual Database Tools) fazem determinadas suposições para que ela possa construir uma consulta válida. Por exemplo, se você estiver criando uma consulta de agregação e marcar uma coluna de dados para saída, o Designer de Consulta e Exibição fará automaticamente a parte da coluna da GROUP BY cláusula para que você não tente exibir inadvertidamente o conteúdo de uma linha individual em um resumo.

Usar Grupo por

O Designer de Consulta e Exibição usa as seguintes diretrizes para trabalhar com colunas:

  • Quando você escolhe a opção Agrupar por ou adiciona uma função de agregação a uma consulta, todas as colunas marcadas para saída ou usadas para classificação são adicionadas automaticamente à GROUP BY cláusula. As colunas não serão adicionadas automaticamente à GROUP BY cláusula se já fizerem parte de uma função de agregação.

    Se você não quiser que uma coluna específica faça parte da cláusula, altere-a GROUP BY manualmente selecionando uma opção diferente na coluna Agrupar por do painel Critérios. No entanto, o Designer de Consulta e Exibição não impede que você escolha uma opção que possa resultar em uma consulta que não seja executada.

  • Se você adicionar manualmente uma coluna de saída de consulta a uma função de agregação no painel Critérios ou SQL, o Designer de Consulta e Exibição não removerá automaticamente outras colunas de saída da consulta. Portanto, você deve remover as colunas restantes da saída da consulta ou torná-las parte da GROUP BY cláusula ou de uma função de agregação.

Quando você insere uma condição de pesquisa na coluna Filtro do painel Critérios, o Designer de Consulta e Exibição segue estas regras:

  • Se a coluna Agrupar por da grade não for exibida (porque você ainda não especificou uma consulta de agregação), a condição de pesquisa será colocada na WHERE cláusula.

  • Se você já estiver em uma consulta de agregação e tiver selecionado a opção Onde na coluna Agrupar Por , a condição de pesquisa será colocada na WHERE cláusula.

  • Se a coluna Agrupar Por contiver qualquer valor diferente de Onde, a condição de pesquisa será colocada na HAVING cláusula.

Usar as cláusulas HAVING e WHERE

Os princípios a seguir descrevem como você pode referenciar colunas em uma consulta agregada em condições de pesquisa. Em geral, você pode usar uma coluna em uma condição de pesquisa para filtrar as linhas que devem ser resumidas (uma WHERE cláusula) ou determinar quais resultados agrupados aparecem na saída final (uma HAVING cláusula).

  • Colunas de dados individuais podem aparecer na cláusula ou HAVING na WHERE cláusula, dependendo de como elas são usadas em outro lugar na consulta.

  • WHERE as cláusulas são usadas para selecionar um subconjunto de linhas para resumir e agrupar e, portanto, são aplicadas antes de qualquer agrupamento ser feito. Portanto, você pode usar uma coluna de dados em uma WHERE cláusula mesmo que ela não faça parte da GROUP BY cláusula ou esteja contida em uma função de agregação. Por exemplo, a instrução a seguir seleciona todos os títulos que custam mais de US$ 10,00 e faz a média do preço:

    SELECT AVG(price)
    FROM titles
    WHERE price > 10;
    
  • Se você criar uma condição de pesquisa que envolva uma coluna também usada em uma GROUP BY cláusula ou função de agregação, a condição de pesquisa poderá aparecer como uma WHERE cláusula ou uma HAVING cláusula - você pode decidir qual quando criar a condição. Por exemplo, a instrução a seguir cria um preço médio para os títulos de cada editor e exibe a média para os editores em que o preço médio é maior que US$ 10,00:

    SELECT pub_id,
           AVG(price)
    FROM titles
    GROUP BY pub_id
    HAVING (AVG(price) > 10);
    
  • Se você usar uma função de agregação em uma condição de pesquisa, a condição envolverá um resumo e, portanto, deverá fazer parte da HAVING cláusula.