Observem que inicial temos 4 registros, entretanto a consulta resulta 3 registros, ok? Mas onde está o outro registro que 'sumiu'? Ele foi agrupado! São eles:
.....
00002 Bruno 27062002 2,00
.....
00004 Bruno 18092003 3,80
Foi agrupado em um único registro:
Codigo Nome Data Quantidade
00004 Bruno 18092003 5,80
Perceberam? EXATO!!
Houve uma soma no atributo quantidade, para encontrar o gabarito encontre uma alternativa que exista um sum(quantidade).
GABARITO ALTERNATIVA A
Obs.: obviamente a alternativa b não poderia ser, embora ela tenha uma função sum(quantidade) ela é um operação de inserção INSERT INTO e não um select
Não existe resposta certa.
veja na prática: http://sqlfiddle.com/#!9/2cda76/2
A questão queria agrupar os registros de Bruno, porém, o script da alternativa dada como certa agrupou por código e nome: group by Codigo, Nome. Contudo, não existe registro com o mesmo código.
00001 Alessandra 25052002 2,50
00002 Bruno 27062002 2,00
00003 Marcos 23052002 3,60
00004 Bruno 18092003 3,80
O script estaria correto se Bruno tivesse o mesmo código nos dois registros. OU, se omitisse o código na agregação (group by).
Exemplo:
SELECT Nome, min(Data) Data, sum(Quantidade) Quantidade FROM TabInfo GROUP BY Nome
Deu para acertar a questão porque as demais alternativas estavam com erro mais "gritante".
B) INSERT INTO TabInfo VALUES Codigo, Nome, max(Data) Data, sum(Quantidade) Quantidade GROUP BY Codigo, Nome.
Na alterativa B, o script não faz uma projeção mas um insert na tabela TabInfo. Além disse, tá pegando a maior data Max(data). Na questão, o resultado trouxe para Bruno a data = 23052002, que é a menor data. Com isso já podemos descartar essa opção.
C) SELECT Codigo, Nome, Tamanho, Quantidade FROM TabInfo WHERE Data=max AND Quantidade=sum.
O primeiro erro é usar a coluna Tamanho, ela não existe na tabela.
Além disso, a sintaxe não existe. As funções exigem a coluna entre os parentes, ex.: max(), e não podem ser usadas na condição where. devem ser usadas com HAVING. mais ou menos assim:
SELECT Nome, sum(Quantidade) QTD FROM tableInfor
group by Nome
having max(data) = '18092003' and sum(quantidade) = 5.80
Obs.: o script acima foi um exemplo de uso do HAVING, e não representa o resultado que a questão pede.
D) SELECT Codigo, Nome, count(Data) Data, max (Quantidade) Quantidade FROM TabInfo GROUP BY Codigo, Nome, Data, Quantidade.
Esta alternativa está contando quantos registros agrupados na coluna Data e qual a maior quantidade.
Se não houvesse o erro do group by codigo. o resultado seria esse:
1 Alessandra 1 2.50
2 Bruno 2 3.80
3 Marcos 1 3.60