Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FUNDATEC 2023

Banco de DadosSQL
Código
qq891232
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2023
Nível
Superior
Cargo
Analista de Sistemas

Para responder à questão, considere a Figura 4.


Imagem da questão

Considerando a tabela TURMA, apresentada na Figura 4, quantas linhas serão retornadas com execução do comando SQL abaixo?SELECT COUNT(ID), TURNOFROM TURMAGROUP BY TURNO;
  1. A0
  2. B1
  3. C3
  4. D4
  5. E6
Revelar gabarito e comentário

GabaritoC — 3

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 C — a conta chega a 3 linhas — alternativa C.

A ideia por trás

O GROUP BY é uma cláusula do SQL que junta todas as linhas que têm o mesmo valor em uma coluna escolhida, transformando cada grupo em uma única linha no resultado. Ele é sempre usado com funções de agregação, como COUNT, SUM, AVG, MAX e MIN, que resumem as informações de cada grupo. O número de linhas do resultado final é exatamente o número de grupos formados, não o total de registros da tabela.

A função COUNT(coluna) conta quantas linhas de cada grupo têm valor não nulo na coluna indicada. O GROUP BY define os grupos; o COUNT apenas preenche cada grupo com um número. Se a tabela tem 6 registros distribuídos em 3 turnos diferentes, o GROUP BY cria 3 grupos, e o resultado terá 3 linhas, cada uma com o nome do turno e a contagem de IDs daquele turno. A pegadinha clássica é confundir o total de linhas da tabela com o número de grupos.

Esta questão cobra exatamente essa distinção: o comando agrupa por TURNO, então o número de linhas retornadas é o número de turnos distintos presentes na tabela, não o total de registros.

O que a questão dá

  • tabela TURMA com colunas ID e TURNO

  • comando SQL: SELECT COUNT(ID), TURNO FROM TURMA GROUP BY TURNO

O que queremos: o número de linhas retornadas pelo comando

Passo 1 — Contar os valores distintos de TURNO

O comando tem GROUP BY TURNO, então o agrupamento é feito pelos valores da coluna TURNO. Cada valor distinto dessa coluna vira um grupo, e cada grupo vira uma linha no resultado. Precisamos olhar a tabela e contar quantos turnos diferentes existem.

3 turnos distintos

NÃO CAIA NESSA!

Contar o total de linhas da tabela (6) em vez de contar os turnos diferentes.

Passo 2 — Entender o papel do COUNT(ID)

O COUNT(ID) não muda o número de linhas do resultado; ele apenas preenche cada grupo com a quantidade de IDs não nulos. Como o resultado já tem uma linha por grupo, o COUNT só define o valor exibido na primeira coluna.

NÃO CAIA NESSA!

Pensar que o COUNT(ID) retorna o número de grupos — na verdade ele retorna a contagem de IDs dentro de cada grupo.

Resposta: 3 linhas — alternativa C

Link permanente: /questoes/qq891232