Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2023
Banco de Dados›Consultas e Comandos em SQL
Código
qa538177
Banca
FUNDATEC
Órgão
CAU RS
Ano
2023
Cargo
Ana Sup ( )
PROJETO
ID
DESCRICAO
TIPO
PRAZO_EXECUCAO_DIAS
1
Decoração
A1
10
2
Marcenaria
B2
75
3
Elétrica
A3
60
4
Alvenaria
C1
120
5
Revestimentos
C2
105
6
Hidráulica
A3
45
Quantas linhas serão retornadas com a execução do comando SQL abaixo?
SELECT TIPO, COUNT(*)
FROM PROJETO
GROUP BY TIPO
ORDER BY COUNT(*) DESC;
A1.
B2.
C3.
D4.
E5.
Revelar gabarito e comentário▾
GabaritoE — 5.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Resolução
Gabarito: letra E — a conta chega a 5 linhas — alternativa E.
A ideia por trás
O comando GROUP BY é uma cláusula do SQL que agrupa linhas que têm o mesmo valor em uma ou mais colunas. Quando usado com funções de agregação como COUNT, SUM, AVG, MAX e MIN, ele permite calcular um valor resumido para cada grupo. No caso, COUNT(*) conta quantas linhas existem em cada grupo. O ORDER BY apenas ordena o resultado final, mas não altera a quantidade de linhas retornadas.
A consulta SELECT TIPO, COUNT() FROM PROJETO GROUP BY TIPO ORDER BY COUNT() DESC agrupa os registros por cada valor distinto da coluna TIPO. Para cada grupo, COUNT() conta o número de linhas daquele grupo. O ORDER BY COUNT() DESC ordena os grupos pela contagem em ordem decrescente, mas isso não muda o número de grupos. O número de linhas retornadas é igual ao número de grupos formados, ou seja, o número de valores distintos na coluna TIPO.
Esta questão cobra exatamente a diferença entre o número de registros na tabela e o número de grupos formados pelo GROUP BY. A pegadinha é que muitos candidatos contam o total de registros (6) em vez de contar os valores distintos de TIPO (5).
O que a questão dá
tabela PROJETO com 6 registros
coluna TIPO com valores: A1, B2, A3, C1, C2, A3
comando SQL: SELECT TIPO, COUNT() FROM PROJETO GROUP BY TIPO ORDER BY COUNT() DESC
O que queremos: quantas linhas o comando SQL retorna
Passo 1 — Listar os valores distintos de TIPO
O GROUP BY agrupa as linhas por cada valor distinto da coluna TIPO. Para saber quantas linhas a consulta retorna, precisamos primeiro identificar quantos valores diferentes existem nessa coluna.
NÃO CAIA NESSA!
Contar os registros da tabela (6) em vez de contar os valores distintos. O valor A3 aparece duas vezes, mas é um único grupo.
Passo 2 — Contar quantos grupos foram formados
Cada valor distinto de TIPO vira um grupo. O COUNT(*) conta quantas linhas há em cada grupo, mas o número de linhas retornadas é o número de grupos, não a soma das contagens.
NÃO CAIA NESSA!
Somar as contagens (1+2+1+1+1 = 6) e achar que a consulta retorna 6 linhas. O resultado tem uma linha por grupo, não por registro.
Passo 3 — Entender o efeito do ORDER BY
O ORDER BY COUNT(*) DESC apenas ordena os grupos pela contagem em ordem decrescente. Ele não cria nem remove grupos, então o número de linhas retornadas continua sendo o número de grupos.
NÃO CAIA NESSA!
Achar que o ORDER BY altera a quantidade de linhas. Ele só muda a ordem de exibição.