A solução correta para que uma consulta sql retorne às agênc...

Próximas questões
Com base no mesmo assunto
Ano: 2015 Banca: SRH Órgão: UERJ Prova: SRH - 2015 - UERJ - Analista de Sistemas |
Q483273 Banco de Dados
A solução correta para que uma consulta sql retorne às agências que possuem média dos saldos aplicados em conta maior que 1200 é:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: Alternativa A

Para resolver questões como essa, é necessário compreender o funcionamento das cláusulas SELECT, FROM, GROUP BY e HAVING no SQL. O uso correto dessas cláusulas permite realizar consultas que agregam dados e filtram esses resultados de acordo com condições específicas.

A Alternativa A está correta pois segue a sintaxe correta para realizar uma consulta que precisa de uma agregação de dados seguida de um filtro condicional pós-agregação. A cláusula GROUP BY é utilizada para agrupar os registros pelo nome da agência, enquanto a função AVG(saldo) calcula a média dos saldos das contas para cada uma dessas agências. A cláusula HAVING é utilizada para aplicar o filtro somente nas agências cuja média dos saldos é maior que 1200, cumprindo assim o requisito da consulta.

Esse comportamento é adequado e necessário pois a condição de filtragem se aplica após a agregação dos dados, e não antes, o que inviabilizaria o uso da cláusula WHERE, a qual é aplicada antes do agrupamento dos dados. Como queremos filtrar com base em um resultado agregado, o HAVING é a escolha correta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

A Função having tem por objetivo especifica um critério de pesquisa para um grupo ou um agregado. A cláusula HAVING geralmente é usada com a cláusula GROUP BY.


Portanto, a opção que demonstra de maneira correta é a opção A

Fonte: https://technet.microsoft.com/pt-br/library/ms173260%28v=sql.110%29.aspx

Eu ate acertei, mas queria entender porque a letra C esta incorreta
A clausula WHERE e os demais termos, pra mim, estao aplicadas corretamente

Achei a resposta do porquê da alternativa C estar errada em: http://www.postgresql.org/docs/9.1/static/sql-expressions.html#SYNTAX-AGGREGATES :

"An aggregate expression can only appear in the result list or HAVING clause of a SELECT command. It is forbidden in other clauses, such as WHERE, because those clauses are logically evaluated before the results of aggregates are formed."


Obrigaado pela ajuda, amigo Paulo.
Estudando mais sobre BD's, percebi que eh meio que uma regra(ou obrigaacao) o GROUP BY ser acompanhado do HAVING.
Agradeco a ajuda!

Na verdade pode ter group by sem ter having e o contrário também.
O Having é pra quando você utiliza uma cláusula no select que é agregada, tipo(SUM,AVG, etc) eles não podem ser filtrados no where, somente com o Having.


Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo