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.
- A)5 5 11.30 5 17.50
Errada, porque COUNT(preco) não é 5 e AVG(quantidade) não é 17.50, já que só existem 2 valores não nulos em quantidade.
- B)5 4 11.30 2 7.0
Errada, porque COUNT(quantidade) não é 4 e a média de quantidade não pode ser 7.0 com apenas os valores 30 e 5.
- C)5 4 11.30 2 17.50
Certa, pois COUNT(*)=5, COUNT(preco)=4, SUM(preco)=11.30, COUNT(quantidade)=2 e AVG(quantidade)=17.50.
- D)5 4 11.30 4 7.0
Errada, porque COUNT(quantidade) não é 4; só duas linhas têm quantidade preenchida.
- E)5 5 11.30 5 7.0
Errada, porque COUNT(preco) não é 5 e AVG(quantidade) não é 7.0, já que os nulos devem ser ignorados.
Gabarito: C
Nesta questão, o foco está nas funções de agregação do SQL, que resumem várias linhas em um único resultado. O detalhe mais importante, e a banca adora isso, é o tratamento de valores nulos: COUNT(*) conta todas as linhas, mas COUNT(coluna) conta só os valores não nulos daquela coluna. Já SUM e AVG ignoram nulos automaticamente, trabalhando apenas com os valores existentes. No conjunto inserido, existem 5 registros ao todo, então COUNT(*) resulta em 5. Na coluna preco, só o primeiro produto não recebeu valor; por isso COUNT(preco) vale 4 e a soma fica 2.3 + 0.8 + 2.3 + 5.9 = 11.30. Sem mistério, só aritmética com SQL. Na coluna quantidade, apenas os produtos 4 e 5 têm valor preenchido, então COUNT(quantidade) vale 2. A média é calculada sobre esses dois números: (30 + 5) / 2 = 17.5. Em outras palavras, o SQL não faz média dos nulos, ele simplesmente os ignora. Por isso, a sequência correta é 5, 4, 11.30, 2, 17.50, que corresponde à alternativa C. Esse é um ponto clássico em concursos: a banca testa se você sabe diferenciar COUNT(*) de COUNT(campo) e se lembra de que agregações como SUM e AVG desconsideram NULL.