Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — FUNDATEC 2025

Banco de DadosBanco de Dados Relacionais
Código
qg468597
Banca
FUNDATEC
Órgão
BRDE
Ano
2025
Nível
Superior
Cargo
Analista de Sistemas - Subárea Desenvolvimento de Sistemas
Analise o comando abaixo, escrito em linguagem SQL ANSI.SELECT COUNT(IP_USUARIO) FROM TB_HISTORICOO que será retornado a partir da execução do comando SQL acima?
  1. AA quantidade total de linhas na tabela TB_HISTORICO.
  2. BA quantidade de linhas distintas (únicas) da tabela TB_HISTORICO.
  3. CA quantidade de linhas distintas (únicas) da coluna IP_USUARIO da tabela TB_HISTORICO.
  4. DA quantidade de linhas da tabela TB_HISTORICO onde a coluna IP_USUARIO não for nula.
  5. EA quantidade de linhas da tabela TB_HISTORICO onde a coluna IP_USUARIO for nula.
Revelar gabarito e comentário

GabaritoD — A quantidade de linhas da tabela TB_HISTORICO onde a coluna IP_USUARIO não for nula.

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ção COUNT com coluna vs COUNT(*)

Gabarito: letra D. A função COUNT(IP_USUARIO) conta apenas as linhas em que o valor da coluna IP_USUARIO não é nulo. Diferentemente de COUNT(*), que conta todas as linhas independentemente de nulos, COUNT(coluna) ignora valores nulos. Isso é definido pelo padrão SQL ANSI.

A banca testa o conhecimento sobre o comportamento das funções de agregação em relação a valores nulos. Muitos candidatos confundem COUNT(coluna) com COUNT(*) ou com COUNT(DISTINCT coluna). Vamos analisar cada alternativa.

1COUNT(*)
Conta TODAS as linhas
Inclui nulos
2COUNT(coluna)
Conta linhas com valor NÃO nulo
Ignora nulos
3COUNT(DISTINCT coluna)
Conta valores ÚNICOS não nulos
Ignora nulos e duplicatas
COUNT no SQL
LEVELsoulevel.com.br
COUNT no SQL: COUNT(*) (Conta TODAS as linhas, Inclui nulos); COUNT(coluna) (Conta linhas com valor NÃO nulo, Ignora nulos); COUNT(DISTINCT coluna) (Conta valores ÚNICOS não nulos, Ignora nulos e duplicatas)

Alternativa A — ❌ Incorreta

Afirma que retorna a quantidade total de linhas na tabela. Isso seria verdadeiro com COUNT(*), mas não com COUNT(IP_USUARIO). A função COUNT aplicada a uma coluna específica desconsidera registros onde aquela coluna é nula.

Alternativa B — ❌ Incorreta

Diz que retorna a quantidade de linhas distintas (únicas) da tabela. Para contar linhas distintas usaríamos COUNT(DISTINCT *) ou COUNT(DISTINCT coluna). A consulta dada não utiliza DISTINCT.

Alternativa C — ❌ Incorreta

Afirma que retorna a quantidade de linhas distintas (únicas) da coluna IP_USUARIO. Novamente, para valores distintos seria necessário COUNT(DISTINCT IP_USUARIO). Sem DISTINCT, a função conta ocorrências, não valores únicos.

Alternativa D — ✅ Correta ⟵ GABARITO

Exatamente o que COUNT(IP_USUARIO) faz: conta o número de linhas onde o valor de IP_USUARIO não é nulo. É o comportamento padrão da função COUNT quando aplicada a uma coluna.

Alternativa E — ❌ Incorreta

Afirma que retorna a quantidade de linhas onde IP_USUARIO é nulo. Para contar nulos usaríamos COUNT(*) - COUNT(IP_USUARIO) ou SUM(CASE WHEN IP_USUARIO IS NULL THEN 1 ELSE 0 END), mas não diretamente COUNT.

NÃO CAIA NESSA!

Lembre-se da regra de ouro: COUNT(*) conta linhas, COUNT(coluna) conta não nulos, COUNT(DISTINCT coluna) conta valores únicos não nulos. Decore essa tríade para não cair em pegadinhas.

Gabarito: letra D.

Link permanente: /questoes/qg468597