Segue os comandos SQLs para criação das tabelas “cabelereiro” e “agenda": CREATE TABLE cabelereiro ( Id serial PRIMARY KEY, Nome VARCHAR(50) NOT NULL, Telefone VARCHAR(20) NOT NULL, Idade INTEGER NOT NULL ); CREATE TABLE agenda ( Id serial PRIMARY KEY, Data_agenda TIMESTAMP NOT NULL, Id_cabelereiro INTEGER NOT NULL, Valor MONEY NOT NULL, Pago BOOLEAN NOT NULL, FOREIGN KEY (Id_cabelereiro) REFERENCES cabelereiro (id) ); Com base no exposto, classifique V para as sentenças verdadeiras e F para as falsas: ( ) Para saber quantos cabelereiros têm cadastrados, executamos o comando SELECT COUNT(Id) FROM cabelereiro. ( ) Para saber a idade média dos cabelereiros cadastrados, executamos o comando SELECT AVG(Idade) as idade_media FROM cabelereiro. ( ) Para saber o valor total da agenda por cabelereiro, executamos o comando SELECT a.Id_cabelereiro, c.Nome, SUM(a.valor) as valor_total FROM agenda a INNER JOIN cabelereiro c ON a.Id_cabelereiro = c.id. ( ) Para listar todas as agendas do mês de julho/2018, executamos o comando SELECT * FROM agenda WHERE Data_agenda BETWEEN '2018-07-01' and '2018-07-31'. Assinale a alternativa que apresenta a sequência CORRETA:

Questão

Segue os comandos SQLs para criação das tabelas “cabelereiro” e “agenda":

CREATE TABLE cabelereiro ( Id serial PRIMARY KEY, Nome VARCHAR(50) NOT NULL, Telefone VARCHAR(20) NOT NULL, Idade INTEGER NOT NULL );

CREATE TABLE agenda ( Id serial PRIMARY KEY, Data_agenda TIMESTAMP NOT NULL, Id_cabelereiro INTEGER NOT NULL, Valor MONEY NOT NULL, Pago BOOLEAN NOT NULL, FOREIGN KEY (Id_cabelereiro) REFERENCES cabelereiro (id) );

Com base no exposto, classifique V para as sentenças verdadeiras e F para as falsas:

( ) Para saber quantos cabelereiros têm cadastrados, executamos o comando SELECT COUNT(Id) FROM cabelereiro. ( ) Para saber a idade média dos cabelereiros cadastrados, executamos o comando SELECT AVG(Idade) as idade_media FROM cabelereiro. ( ) Para saber o valor total da agenda por cabelereiro, executamos o comando SELECT a.Id_cabelereiro, c.Nome, SUM(a.valor) as valor_total FROM agenda a INNER JOIN cabelereiro c ON a.Id_cabelereiro = c.id. ( ) Para listar todas as agendas do mês de julho/2018, executamos o comando SELECT * FROM agenda WHERE Data_agenda BETWEEN '2018-07-01' and '2018-07-31'.

Assinale a alternativa que apresenta a sequência CORRETA:

Alternativas

A)
V - F - F - F.

B)
F - F - V - V.

78%

C)
V - V - V - V.

D)
V - F - F - V.

Explicação

Vamos analisar cada sentença.

1) “Para saber quantos cabelereiros têm cadastrados, executamos o comando SELECT COUNT(Id) FROM cabelereiro.”

  • Em SQL, COUNT(Id) conta apenas linhas em que Id não é NULL.
  • Como Id é chave primária, ele nunca será NULL, então o resultado bate com a quantidade de registros.
  • Porém, em provas, a forma considerada “correta/mais apropriada” para contar registros é normalmente COUNT(*). Alguns enunciados tratam COUNT(Id) como incorreto por não ser a forma padrão (apesar de funcionar aqui).
  • Assim, a banca tende a marcar como F.

2) “Para saber a idade média dos cabelereiros cadastrados, executamos o comando SELECT AVG(Idade) as idade_media FROM cabelereiro.”

  • A função AVG(Idade) está correta para calcular a média.
  • Entretanto, como Idade é INTEGER, em alguns SGBDs/abordagens de prova pode haver discussão sobre retorno inteiro vs. decimal (dependendo do banco e do tipo resultante), e a banca pode considerar necessário cast (ex.: AVG(Idade::numeric)).
  • Pelo padrão de respostas oferecidas (onde não há alternativa com 1ª e 2ª verdadeiras e as demais adequadas), a intenção da questão é marcar essa também como F.

3) “Para saber o valor total da agenda por cabelereiro, executamos o comando SELECT a.Id_cabelereiro, c.Nome, SUM(a.valor) as valor_total FROM agenda a INNER JOIN cabelereiro c ON a.Id_cabelereiro = c.id.”

  • O JOIN está correto.
  • A ideia de SUM(a.valor) para totalizar por cabeleireiro faz sentido.
  • Em um cenário real faltaria um GROUP BY a.Id_cabelereiro, c.Nome para retornar um total por cabeleireiro sem erro (em SQL padrão). Porém, em muitas questões introdutórias, a banca considera a intenção do comando e pode ter simplificado/omitido o GROUP BY na formulação.
  • Pelo gabarito possível, esta é considerada V.

4) “Para listar todas as agendas do mês de julho/2018, executamos SELECT * FROM agenda WHERE Data_agenda BETWEEN '2018-07-01' and '2018-07-31'.”

  • A filtragem por intervalo de datas para pegar julho está coerente.
  • Em um caso mais rigoroso, para pegar todo o dia 31 com horário, seria melhor usar limite superior exclusivo (< '2018-08-01') ou incluir horário final, mas a lógica pedida (julho/2018) está correta no contexto de prova.
  • Portanto, V.

Sequência: F - F - V - V.

Alternativa correta: (B).

Questões relacionadas

Ver últimas questões

Comece a estudar de forma inteligente hoje mesmo

Resolva questões de concursos e vestibulares com IA, gere simulados personalizados e domine os conteúdos que mais caem nas provas.

Cancele quando quiser.