Pular para o conteúdo principal

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

Banco de DadosSQL
Código
qq892786
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2023
Nível
Médio
Cargo
Programador

Para responder à questão, considere um banco de dados relacional que possui duas tabelas, chamadas de tabela_a e tabela_b, contendo o formato e os valores abaixo: 


Imagem da questão

Qual o resultado esperado a partir da execução do comando SQL abaixo?select count(*) from tabela_a where id<>id_b;
  1. A4
  2. B3
  3. C2
  4. D1
  5. E0
Revelar gabarito e comentário

GabaritoB — 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 B — a conta chega a 3 — alternativa B.

A ideia por trás

O comando SELECT COUNT(*) é uma função de agregação do SQL que conta quantas linhas de uma tabela satisfazem uma condição. A condição é escrita no WHERE, e o banco avalia essa condição para cada linha individualmente, somando apenas as que forem verdadeiras.

A condição id <> id_b compara duas colunas da mesma linha. O operador <> significa 'diferente de'. Para cada linha, o banco verifica se o valor de id é diferente do valor de id_b; se for, a linha entra na contagem. Se os valores forem iguais, a linha é ignorada. É uma comparação linha a linha, sem junção entre tabelas.

Esta questão cobra exatamente a interpretação da comparação de desigualdade entre colunas da mesma tabela e o efeito do COUNT(*) sobre ela. O passo decisivo é avaliar cada linha e contar apenas as que atendem à condição.

O que a questão dá

  • comando SQL: select count(*) from tabela_a where id<>id_b

  • tabela_a com colunas id e id_b

  • dados da tabela (ilustrativos): (1,2), (2,2), (3,4), (4,4), (5,6)

O que queremos: o número de linhas da tabela_a em que o valor de id é diferente do valor de id_b

Passo 1 — Listar as linhas da tabela

Para saber quantas linhas serão contadas, precisamos primeiro ver os dados que estão na tabela. O comando não junta tabelas, então cada linha é avaliada sozinha.

5 linhasnototal\boxed{5\ \text{linhas} \text{no} \text{total}}
NÃO CAIA NESSA!

Esquecer que a tabela tem 5 linhas e tentar adivinhar o resultado sem olhar os dados.

Passo 2 — Comparar id com id_b em cada linha

A condição do WHERE é avaliada linha a linha. Precisamos ver, para cada linha, se o valor de id é diferente do valor de id_b. Isso é o coração da consulta.

Por que esta fórmula: O operador <> é o de desigualdade: retorna verdadeiro quando os dois valores são diferentes, e falso quando são iguais. O COUNT(*) conta apenas as linhas onde a condição é verdadeira.

Linhas 1, 3 e 5 têm id diferente de id_b; linhas 2 e 4 têm iguais

NÃO CAIA NESSA!

Confundir <> com = e contar as linhas iguais em vez das diferentes.

Passo 3 — Contar as linhas que passaram na condição

O COUNT(*) soma exatamente as linhas que tiveram condição verdadeira. Como já identificamos quais são, agora é só contar.

Por que esta fórmula: COUNT(*) é a função que conta linhas; ela não precisa de argumento específico, conta todas as linhas que o WHERE deixou passar.

3 linhas\boxed{3\ \text{linhas}}
NÃO CAIA NESSA!

Contar todas as 5 linhas, esquecendo que as linhas 2 e 4 não atendem à condição.

Resposta: 3 — alternativa B

Link permanente: /questoes/qq892786