FC ConcursosFC Concursos

Questão FC90539

Julgue o item que se segue, a respeito de SQL e das técnicas para detecção de problemas e otimização de desempenho do SGDB e de consultas SQL. Considere-se o trecho de código em SQ

Linguagem SQL

CEBRASPE (CESPE) · 2023

Julgue o item que se segue, a respeito de SQL e das técnicas para detecção de problemas e otimização de desempenho do SGDB e de consultas SQL.
 
Considere-se o trecho de código em SQL a seguir.
 
create table tabela (a integer,
b numeric(4,2), c char(10));
insert into tabela (a,b,c) values (4,3,5);
insert into tabela (a,c) values (5,5);
insert into tabela (b,c) values (5,3);
insert into tabela (c) values (7);
insert into tabela (b) values (7);
select avg(a),avg(b) from tabela;
 
Executando-se esse código, obtém-se o resultado a seguir.


Mostrar resposta e comentário

Gabarito

Errado

Comentário do professor

Comentário: 

Comentário sobre a questão:

A assertiva está correta ao indicar que o resultado apresentado está errado.
Analisando o código SQL:

CREATE TABLE tabela (
    a INTEGER,
    b NUMERIC(4,2),
    c CHAR(10)
);

  • A tabela tem três colunas:
    • a (inteiro)
    • b (numérico com 4 dígitos, sendo 2 decimais)
    • c (caractere de tamanho fixo 10)
Inserção de valores:

INSERT INTO tabela (a, b, c) VALUES (4, 3.5, '...');
INSERT INTO tabela (a, b, c) VALUES (5, 5.3, '...');
INSERT INTO tabela (b, c) VALUES (6.3, '...');
INSERT INTO tabela (c) VALUES ('...');
INSERT INTO tabela (b) VALUES (7);

  • Nota-se que há valores ausentes (NULL) para algumas colunas.
Consulta executada:

SELECT AVG(a), AVG(b) FROM tabela;

  • A função AVG() ignora valores NULL ao calcular a média.
  • Como a foi inserido apenas em duas linhas (4 e 5), a média será:

  • (4 + 5) / 2 = 4.5

    Para b, os valores válidos são 3.5, 5.3, 6.3 e 7, então a média será:
    (3.5 + 5.3 + 6.3 + 7) / 4 = 5.275

    Erro no resultado apresentado na questão:
    • O resultado informado foi AVG(a) = 4 e AVG(b) = 15, o que está incorreto, pois AVG(a) deveria ser 4.5, e AVG(b) não pode ser 15.

    Assertiva corrigida:

    "O resultado correto da consulta será AVG(a) = 4.5 e AVG(b) = 5.275, pois a função AVG() ignora valores NULL e calcula a média apenas dos valores não nulos."



    Conteúdo do catálogo FC Concursos · Atualizado em

    Continue aprendendo