Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em alguns casos, talvez você queira excluir linhas individuais de grupos (usando uma cláusula WHERE) antes de aplicar uma condição a grupos como um todo (usando uma cláusula HAVING).
Uma cláusula HAVING é como uma cláusula WHERE, mas se aplica apenas a grupos como um todo (ou seja, às linhas no conjunto de resultados que representam grupos), enquanto a cláusula WHERE se aplica a linhas individuais. Uma consulta pode conter uma cláusula WHERE e uma cláusula HAVING. Nesse caso:
A cláusula WHERE é aplicada primeiro às linhas individuais nas tabelas ou objetos com valor de tabela no painel Diagrama. Somente as linhas que atendem às condições na cláusula WHERE são agrupadas.
A cláusula HAVING é então aplicada às linhas no conjunto de resultados. Somente os grupos que atendem às condições HAVING aparecem na saída da consulta. Você pode aplicar uma cláusula HAVING somente a colunas que também aparecem na cláusula GROUP BY ou em uma função de agregação.
Por exemplo, imagine que você está unindo as tabelas titles e publishers para criar uma consulta mostrando o preço médio de livros para um conjunto de editoras. Você quer ver o preço médio apenas para um conjunto específico de editores - talvez apenas os editores no estado da Califórnia. E mesmo assim, você quer ver o preço médio apenas se for mais de US $ 10,00.
Você pode estabelecer a primeira condição incluindo uma cláusula WHERE, que descarta os editores que não estão na Califórnia, antes de calcular os preços médios. A segunda condição requer uma cláusula HAVING, pois a condição se baseia nos resultados do agrupamento e resumo dos dados. A instrução SQL resultante pode ter esta aparência:
SELECT titles.pub_id, AVG(titles.price)
FROM titles INNER JOIN publishers
ON titles.pub_id = publishers.pub_id
WHERE publishers.state = 'CA'
GROUP BY titles.pub_id
HAVING AVG(price) > 10
Você pode criar cláusulas HAVING e WHERE no painel Critérios. Por padrão, se você especificar uma condição de pesquisa para uma coluna, a condição se tornará parte da cláusula HAVING. No entanto, você pode alterar a condição para ser uma cláusula WHERE.
Você pode criar uma cláusula WHERE e uma cláusula HAVING envolvendo a mesma coluna. Para fazer isso, você deve adicionar a coluna duas vezes ao painel Critérios e, em seguida, especificar uma instância como parte da cláusula HAVING e a outra instância como parte da cláusula WHERE.
Para especificar uma condição WHERE em uma consulta agregada
Especifique os grupos para sua consulta. Para obter detalhes, consulte linhas de grupo em resultados de consulta (Visual Database Tools).
Se ainda não estiver no painel Critérios, adicione a coluna na qual você deseja basear a condição WHERE.
Desmarque a coluna Saída, a menos que a coluna de dados faça parte da cláusula GROUP BY ou incluída em uma função de agregação.
Na coluna Filtro , especifique a condição WHERE. O Designer de Consulta e Exibição adiciona a condição à cláusula HAVING da instrução SQL.
Observação
A consulta mostrada no exemplo para este procedimento une duas tabelas,
titlesepublishers.Neste ponto da consulta, a instrução SQL contém uma cláusula HAVING:
SELECT titles.pub_id, AVG(titles.price) FROM titles INNER JOIN publishers ON titles.pub_id = publishers.pub_id GROUP BY titles.pub_id HAVING publishers.state = 'CA'Na coluna Agrupar por, selecione Onde na lista de opções de grupo e resumo. O Designer de Consulta e Exibição remove a condição da cláusula HAVING na instrução SQL e a adiciona à cláusula WHERE.
Em vez disso, a instrução SQL é alterada para incluir uma cláusula WHERE:
SELECT titles.pub_id, AVG(titles.price) FROM titles INNER JOIN publishers ON titles.pub_id = publishers.pub_id WHERE publishers.state = 'CA' GROUP BY titles.pub_id
Consulte Também
Classificar e Agrupar Resultados de Consulta (Ferramentas de Banco de Dados Visuais)
Resumir Resultados da Consulta (Ferramentas de Banco de Dados Visuais)