Partilhar via


Trabalhar com colunas em consultas agregadas (Visual Database Tools)

Aplica-se a: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 possam construir uma consulta válida. Por exemplo, se você estiver criando uma consulta agregada e marcar uma coluna de dados para saída, o Designer de Consulta e Exibição tornará automaticamente a GROUP BY coluna parte da cláusula para que você não tente exibir inadvertidamente o conteúdo de uma linha individual em um resumo.

Usar o 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 são adicionadas automaticamente à GROUP BY cláusula se já fizerem parte de uma função agregada.

    Se não quiser que uma coluna específica faça parte da GROUP BY cláusula, altere-a 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 pode resultar em uma consulta que não é executada.

  • Se você adicionar manualmente uma coluna de saída de consulta a uma função agregada 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 agregada.

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 agregada), a condição de pesquisa será colocada na WHERE cláusula.

  • Se você já estiver em uma consulta agregada 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.

Use 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 para determinar quais resultados agrupados aparecem na saída final (uma HAVING cláusula).

  • Colunas de dados individuais podem aparecer na WHERE cláusula ou HAVING , 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 agregada. Por exemplo, a instrução a seguir seleciona todos os títulos que custam mais de US$ 10,00 e calcula 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ê poderá 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, em seguida, exibe a média para os editores em que o preço médio é maior que $10,00:

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