Trabalhando com colunas em consultas agregadas
Quando você cria consultas agregadas a Query and View Designer Tools faz algumas suposições de forma que ele pode construir uma consulta válida.Por exemplo, se você estiver criando uma consulta agregada e marca uma coluna de dados para saída, a consulta e o modo de exibição Designer automaticamente torna o coluna parte da cláusula GROUP BY, de modo que você não tente inadvertidamente exibir o conteúdo de uma linha individual em um resumo.
Usando o Group By
A consulta e o modo de exibição Designer usa as seguintes diretrizes para trabalhar com colunas:
Quando você escolhe a opção Group By ou adiciona uma função agregada a uma consulta, todas as colunas marcadas para saída ou usado na classificação são automaticamente adicionadas à cláusula GROUP BY.Colunas não são adicionadas automaticamente à cláusula GROUP BY se elas já fazem parte de uma função agregada.
Se você não quiser uma determinada coluna seja parte da cláusula GROUP BY, você deve alterá-lo manualmente, selecionando uma opção diferente na coluna Group By do painel de critérios.No entanto, a consulta e o modo de exibição Designer não impedirão você escolher uma opção que pode resultar em uma consulta que não será executado.
Se você adicionar manualmente uma coluna de saída de consulta para um agregado funcionem em ambos os critérios ou painel SQL, a consulta e o modo de exibição Designer não remove automaticamente outras colunas de saída da consulta.Portanto, você deve remover as colunas remanescentes da saída da consulta ou torná-los parte da cláusula GROUP BY ou de uma função agregada.
Quando você insere um critério de pesquisa para a coluna de filtro do painel de critérios, a consulta e o modo de exibição Designer segue estas regras:
Se o Group By coluna da grade não é exibida (porque você ainda não especificou uma consulta agregada), o critério de pesquisa é colocado dentro da cláusula WHERE.
Se você já estão em uma consulta agregada e selecionou a opção onde na Group By coluna, o critério de pesquisa é colocada dentro da cláusula WHERE.
Se o Group By coluna contiver qualquer valor diferente de onde, o critério de pesquisa é colocado na cláusula HAVING.
Uso do HAVING e onde as cláusulas
Os princípios a seguir descrevem como você pode referenciar colunas em uma consulta agregada em critérios de pesquisa.Em geral, você pode usar uma coluna em um critério de pesquisa para filtrar as linhas que devem ser resumidos (uma cláusula WHERE) ou para determinar qual agrupados os resultados são exibidos na saída final (uma cláusula HAVING).
Colunas de dados individuais podem aparecer em tanto a cláusula WHERE ou HAVING, dependendo de como elas são usadas em outro lugar na consulta.
ONDE as cláusulas são usadas para selecionar um subconjunto de linhas para resumir e agrupar e são portanto aplicadas antes de concluir o agrupamento.Portanto, você pode usar uma coluna de dados em uma cláusula WHERE, mesmo que não seja parte da cláusula GROUP BY ou contida em uma função agregada.Por exemplo, a instrução a seguir seleciona todos os títulos que custam mais de $10.00 e calcula o preço médio:
SELECT AVG(price) FROM titles WHERE price > 10
Se você criar um critério de pesquisa que envolve uma coluna também é usada em uma cláusula GROUP BY ou função agregada, o critério de pesquisa pode aparecer como uma cláusula WHERE ou uma cláusula HAVING — você pode decidir que, quando você cria a condição.Por exemplo, a instrução a seguir cria um preço médio dos títulos de cada editora e exiba a média para os editores em que o preço médio é maior que r $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 um critério de pesquisa, a condição envolve um resumo e portanto deve ser parte da cláusula HAVING.