create table produtos( id integer primary key, ...
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.
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