Questão de Banco de Dados — Banco de Dados Relacionais — FUNDATEC 2025
Banco de Dados›Banco 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?
AA quantidade total de linhas na tabela TB_HISTORICO.
BA quantidade de linhas distintas (únicas) da tabela TB_HISTORICO.
CA quantidade de linhas distintas (únicas) da coluna IP_USUARIO da tabela TB_HISTORICO.
DA quantidade de linhas da tabela TB_HISTORICO onde a coluna IP_USUARIO não for nula.
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.
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.