Considere a seguinte tabela de um banco de dados relacional:...

Próximas questões
Com base no mesmo assunto
Q4379719 Banco de Dados
Considere a seguinte tabela de um banco de dados relacional:
Escritório (Número, Tipo, Andar, Fone)
A consulta do PL/SQL para obter a quantidade de escritórios do tipo ‘Sala de Reunião’ é:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: A

Fundamento decisivo: A consulta deve selecionar, em Escritório, as linhas em que Tipo é 'Sala de Reunião' e contar os valores de Tipo nesse conjunto. A alternativa A faz isso com WHERE e COUNT(Tipo), atendendo ao pedido.

Tema central: Contagem de registros filtrados
Análise das alternativas
A
Certa
Na alternativa A, WHERE Tipo = 'Sala de Reunião' restringe o conjunto às linhas da categoria solicitada. Sobre esse conjunto, COUNT(Tipo) conta os valores não nulos da coluna Tipo. Como uma linha com Tipo nulo não satisfaz a igualdade do filtro, todas as linhas selecionadas possuem Tipo preenchido e são contadas. Assim, a consulta retorna exatamente a quantidade desejada, sem depender de uma restrição NOT NULL na definição da coluna.
B
Errada
Há dois problemas: Tipo: 'Sala de Reunião' não constitui uma condição de seleção válida na sintaxe apresentada, e SUM realiza soma de valores numéricos ou conversíveis para números, não contagem de ocorrências de uma categoria textual. Portanto, a expressão não estabelece nem o filtro nem a operação de contagem necessários.
C
Errada
Colocar Tipo = 'Sala de Reunião' dentro de COUNT não equivale a selecionar as linhas que satisfazem essa condição. COUNT conta valores não nulos de uma expressão; não tem como regra contar apenas resultados verdadeiros de comparações. Para a contagem solicitada, a condição deve restringir as linhas por meio de WHERE.
D
Errada
O argumento de COUNT é o literal 'Sala de Reunião', uma constante não nula, e não uma referência à coluna Tipo. Essa constante é contada para cada linha da tabela. Como não há WHERE, a consulta conta todos os escritórios, independentemente do tipo; o texto dentro de COUNT não funciona como filtro.
E
Errada
O WHERE seleciona corretamente os escritórios da categoria solicitada, mas SUM(Tipo) tenta somar seus valores textuais. SUM opera sobre valores numéricos ou conversíveis para números; não conta registros. Logo, acertar o filtro não compensa a escolha da função agregadora inadequada.
Pegadinha da questão
A correta pode ser rejeitada por quem lembra que COUNT(coluna) ignora nulos, mas não verifica o efeito do WHERE: aqui, o próprio filtro já impede que Tipo seja nulo nas linhas contadas.
Dica para questões semelhantes
  • Ao conferir uma consulta agregada, avalie separadamente quais linhas entram no cálculo e qual operação é aplicada a elas: filtro correto e função correta são requisitos independentes.
  • Antes de considerar COUNT(coluna) equivalente à contagem de linhas, verifique se a coluna pode permanecer nula no conjunto selecionado; não presuma uma restrição NOT NULL que não foi informada.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

A alternativa correta é a A:

SELECT COUNT(Tipo)

FROM Escritório

WHERE Tipo = 'Sala de Reunião';

Por que está correta

  • COUNT(Tipo) conta quantas linhas possuem valor não nulo na coluna Tipo.
  • O WHERE Tipo = 'Sala de Reunião' filtra apenas os escritórios desse tipo.
  • Portanto, o resultado é a quantidade de escritórios do tipo “Sala de Reunião”.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo