create table produtos(       id integer primary key,       ...

Próximas questões
Com base no mesmo assunto
Q1875873 Banco de Dados

create table produtos(

       id integer primary key,

       descricao varchar(200) not null,

       preco numeric(10,2),

       quantidade numeric(4)


);


insert into produtos (id, descricao) values (1,'Livro de Banco de Dados');

insert into produtos (id, descricao, preco) values (2,'Caneta vermelha',2.3);

insert into produtos (id, descricao, preco) values (3,'Borracha',0.8);

insert into produtos (id, descricao, preco, quantidade) values (4,'Caderno 100 páginas',2.3, 30);

insert into produtos (id, descricao, preco, quantidade) values (5,'Lupa Grande',5.9, 5);


select count(*), count(preco), sum(preco), count(quantidade), avg(quantidade) from produtos;


Assinale a opção que apresenta o resultado correto para as expressões SQL precedentes. 

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: C

Para resolver essa questão, é essencial compreender as funções de agregação do SQL e como elas interagem com valores NULL. As funções utilizadas são:

  • count(*): Conta o total de linhas, independente de valores NULL.
  • count(coluna): Conta as linhas com valores não-NULL na coluna especificada.
  • sum(coluna): Soma de todos os valores não-NULL da coluna.
  • avg(coluna): Média aritmética dos valores não-NULL da coluna.

Agora, vamos justificar a alternativa correta (C):

  • count(*): Todas as linhas inseridas são contadas, resultando em 5.
  • count(preco): Apenas os registros onde a coluna preço não é NULL são contados. Como o primeiro INSERT não inclui um preço, o resultado é 4.
  • sum(preco): Somando os valores da coluna preço onde não são NULL, resulta em 11.30.
  • count(quantidade): Conta as linhas onde 'quantidade' não é NULL. Somente dois registros possuem valor em 'quantidade', portanto o resultado é 2.
  • avg(quantidade): A média é calculada somente com os valores não-NULL da coluna 'quantidade', ou seja, (30+5)/2 = 17.50.

Assim, a única alternativa que satisfaz todos os resultados corretos é a C.

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

O SUM

recebe como parâmetro uma coluna ou uma expressão e retorna um resultado. Ao passar uma coluna, SUM somará todos os resultados da tabela que forem retornados para a coluna especificada. Já ao receber uma expressão, SUM resolverá a expressão para cada valor antes de somá-los.

O AVG

Calcula a média aritmética de um conjunto de valores contidos em um camp

COUNT(*)

retorna o número de linhas em uma tabela especificada e preserva linhas duplicatas.

COUNT(...)

conta o número de itens inclusos que correspondem a um filtro opcional. A contagem especifica os tipos para os quais os itens inclusos devem ser contados e pode mostrar de forma opcional uma condição de filtro filha que indica quais itens inclusos devem ser contabilizados.

Uma pequena colaboração

Pintei aqui para ficar melhor de analisar as colocações abaixo.

insert into produtos (id, descricao) values (1,'Livro de Banco de Dados');

insert into produtos (id, descricao, preco) values (2,'Caneta vermelha',2.3);

insert into produtos (id, descricao, preco) values (3,'Borracha',0.8);

insert into produtos (id, descricao, preco, quantidade) values (4,'Caderno 100 páginas',2.3, 30);

insert into produtos (id, descricao, preco, quantidade) values (5,'Lupa Grande',5.9, 5);

Análise

select

count(*) ['5' TUPLAS - * representa TODAS],

count(preco) ['4' TUPLAS],

sum(preco) [4 - TUPLAS - soma: '2,3+0,8+2,3+5,9 = 11,30' ],

count(quantidade) ['2' TUPLAS],

avg(quantidade) [2 TUPLAS - TOTAL DE (30+5) = 35. Dividindo por 2 'tuplas' = 17,50]

from produtos;

Por isso, GAB C) 5   4   11.30   2   17.50,

go@head2!

Clique para visualizar este comentário

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