No contexto do MySQL, o comando SQL que produz um desfecho diferente dos demais é:
- A)SELECT País, count(*) Contagem FROM Países GROUP BY País HAVING count(*) > 5 ORDER BY count(*)
Correta, pois usa HAVING para filtrar o total por grupo e ORDER BY count(*) para ordenar pela contagem.
- B)SELECT País, count(*) Contagem FROM Países GROUP BY País HAVING count(*) > 5 ORDER BY Contagem
Correta, porque o alias Contagem pode ser usado no ORDER BY no MySQL.
- C)SELECT País, count(*) Contagem FROM Países GROUP BY País HAVING count(*) > 5 ORDER BY 2
Correta, já que ORDER BY 2 ordena pela segunda coluna do SELECT, isto é, a contagem.
- D)SELECT País, count(*) Contagem FROM Países GROUP BY País WHERE count(*) > 5 ORDER BY count(*)
Errada, porque WHERE não pode ser usado após a agregação para filtrar count(*); nesse caso o filtro deve ser feito com HAVING.
- E)SELECT País, count(*) AS Contagem FROM Países GROUP BY País HAVING count(*) > 5 ORDER BY count(*)
Correta, pois AS Contagem só explicita o alias e a estrutura do filtro e da ordenação continua válida.
Gabarito: D
Em SQL, a ordem lógica de execução importa muito: primeiro o WHERE filtra linhas, depois vem o GROUP BY para agrupar, e só então o HAVING filtra os grupos. Parece detalhe, mas é justamente aí que as bancas adoram colocar a armadilha. No MySQL, depois de agrupar, voce pode ordenar por uma expressão, por alias da coluna calculada ou até pela posição da coluna no SELECT. Nas alternativas A, B, C e E, a lógica geral está correta: o agrupamento ocorre por País, o HAVING filtra apenas os grupos com contagem maior que 5, e o ORDER BY referencia corretamente a contagem, seja por expressão, alias ou posição. Isso é compatível com o funcionamento do MySQL, que aceita essas formas de ordenação. A letra D foge da regra porque usa WHERE count(*) > 5 depois do GROUP BY. Isso não fecha com a lógica do SQL: o WHERE não trabalha com resultado agregado de grupos, e sim com linhas antes da agregação. Para esse tipo de filtro, o comando certo é HAVING, não WHERE. Em prova, pense assim: WHERE filtra a matéria-prima; HAVING filtra o bolo pronto.