Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2025

Banco de DadosConsultas e Comandos em SQL
Código
ce417345
Banca
CESPE / CEBRASPE
Órgão
FUB
Ano
2025
Cargo
Tec ( )
Julgue o item a seguir, que versa sobre administração de banco de dados.   Considere que os comandos SQL a seguir tenham sido executados de forma bem-sucedida.   CREATE TABLE TABELA_TESTE (a integer, b varchar); INSERT INTO TABELA_TESTE (a) VALUES (5); INSERT INTO TABELA_TESTE (b) VALUES ('FUB'); INSERT INTO TABELA_TESTE (a) VALUES (7);   Nessa situação, o resultado da execução da consulta SELECT COUNT(a), AVG(a) FROM TABELA_TESTE; será o apresentado a seguir. count | avg ------+----- 3 4
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

SQL – Funções de Agregação e Valores Nulos

Gabarito: Errado (E). A consulta SELECT COUNT(a), AVG(a) FROM TABELA_TESTE; retornará count = 2 e avg = 6, e não count = 3 e avg = 4 como afirma o item. O erro está em considerar que a linha inserida com valor apenas na coluna b (e, portanto, com a nulo) seria contabilizada pela função COUNT(a) e influenciaria a média AVG(a) — o que não ocorre, pois essas funções ignoram valores nulos.

A questão testa um dos pontos mais sensíveis do SQL: o comportamento das funções de agregação diante de valores NULL. Vamos entender o que acontece passo a passo. A tabela TABELA_TESTE é criada com duas colunas: a (inteiro) e b (texto). Em seguida, são executados três comandos INSERT:

  1. INSERT INTO TABELA_TESTE (a) VALUES (5); — insere uma linha com a = 5 e b = NULL.

  2. INSERT INTO TABELA_TESTE (b) VALUES ('FUB'); — insere uma linha com b = 'FUB' e a = NULL.

  3. INSERT INTO TABELA_TESTE (a) VALUES (7); — insere uma linha com a = 7 e b = NULL.

Portanto, a tabela fica assim:

a

b

5

NULL

NULL

'FUB'

7

NULL

Agora, a consulta SELECT COUNT(a), AVG(a) FROM TABELA_TESTE; é executada. A função COUNT(a) conta o número de linhas em que a coluna a não é nula. Como há duas linhas com valor em a (5 e 7), o resultado é 2. A função AVG(a) calcula a média aritmética dos valores não nulos da coluna a, ou seja, (5 + 7) / 2 = 6. O item afirma que o resultado seria count = 3 e avg = 4, o que estaria correto apenas se a linha com a = NULL fosse considerada — mas isso não acontece.

A pegadinha clássica da banca é fazer o candidato acreditar que COUNT(a) conta todas as linhas da tabela, como se fosse COUNT(*). A diferença é crucial: COUNT(*) conta todas as linhas, independentemente de valores nulos; COUNT(coluna) conta apenas as linhas em que a coluna especificada não é nula. O mesmo raciocínio vale para AVG(a), que ignora os nulos no cálculo da média. Se a consulta fosse SELECT COUNT(*), AVG(a) FROM TABELA_TESTE;, o count seria 3, mas o avg continuaria sendo 6, pois a linha com a nulo não entraria na média.

NÃO CAIA NESSA!

A banca troca COUNT(a) por COUNT(*). O candidato desatento conta as 3 linhas da tabela e calcula a média como (5 + 0 + 7) / 3 = 4, chegando exatamente ao resultado apresentado no item. Mas o SQL ignora nulos nas funções de agregação: COUNT(a) retorna 2 e AVG(a) retorna 6. Lembre-se: COUNT(*) conta linhas; COUNT(coluna) conta valores não nulos.

1COUNT(*)
conta todas as linhas
2COUNT(coluna)
conta apenas não nulos
3AVG(coluna)
média dos não nulos
ignora NULL
4Pegadinha típica
trocar COUNT(a) por COUNT(*)
tratar NULL como zero
Funções de agregação e NULL
LEVELsoulevel.com.br
Funções de agregação e NULL: COUNT(*) (conta todas as linhas); COUNT(coluna) (conta apenas não nulos); AVG(coluna) (média dos não nulos, ignora NULL); Pegadinha típica (trocar COUNT(a) por COUNT(*), tratar NULL como zero)

Item — ❌ Errado

O item afirma que o resultado da consulta será count = 3 e avg = 4. Isso está incorreto. O resultado real é count = 2 e avg = 6, pois as funções COUNT(a) e AVG(a) desconsideram a linha em que a é nulo. O valor 4 para a média só seria obtido se o nulo fosse tratado como zero, o que não é o comportamento padrão do SQL.

Gabarito: Errado (E).

Link permanente: /questoes/ce417345