← Questões de Banco de Dados

Banco de Dados · CONSULPLAN · 2021

Questão comentada de Banco de Dados

O comando select pode incluir até seis cláusulas devendo a instrução seguir uma ordem predeterminada; são obrigatórias apenas as duas primeiras cláusulas – select e from. “Conceitualmente, a execução de cada ___________ segue a seguinte ordem: 1. A cláusula _____________ é testada, produzindo, com isso, junção e/ou seleção de linhas. 2. É feito o agrupamento das linhas resultantes usando-se os valores das colunas do _____________. 3. São escolhidos apenas os grupos que satisfazem a cláusula ____________, que é sempre aplicada a cada grupo como um todo e não individualmente às suas linhas. 4. As linhas assim resultantes são organizadas pelas colunas indicadas no ____________. 5. É feita a projeção na lista de colunas do _____________, eventualmente com cálculo de funções de agregação que são aplicadas a todas as linhas resultantes de cada grupo.” Assinale a alternativa que completa correta e sequencialmente a afirmativa anterior.

Gabarito: A

Em SQL, a ordem em que você escreve o comando nem sempre é a mesma ordem lógica em que o banco entende a consulta. No enunciado, a banca está cobrando justamente a ordem conceitual de execução do SELECT: primeiro vem a filtragem das linhas na cláusula WHERE, depois o agrupamento com GROUP BY, em seguida o filtro dos grupos com HAVING, depois a ordenação com ORDER BY e, por fim, a projeção da lista do SELECT. É aquela clássica pegadinha de prova: a escrita é uma coisa, a lógica de execução é outra. A ideia é simples. O WHERE atua antes de formar os grupos, então ele seleciona linhas individuais. Depois o GROUP BY junta essas linhas por colunas comuns. Só então o HAVING entra em cena, filtrando grupos inteiros, o que faz diferença quando há funções de agregação como SUM, AVG e COUNT. O ORDER BY organiza o resultado final, e o SELECT define quais colunas ou expressões vão aparecer na saída. Por isso o gabarito A faz sentido: a sequência pedida na frase é exatamente SELECT / WHERE / GROUP BY / HAVING / ORDER BY / SELECT. A banca só trocou a primeira e a última aparição de SELECT por espaços em branco na construção do texto, mas o raciocínio é esse mesmo. Em resumo: primeiro você filtra linhas, depois agrupa, depois filtra grupos, depois ordena, e só então projeta o resultado final. Se você lembrar dessa trilha, fica muito mais fácil não confundir WHERE com HAVING. O WHERE é o porteiro das linhas; o HAVING é o fiscal dos grupos.

Continue treinando

Questões relacionadas