Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida no Ex. 3 da Aula 4 - Agrupando dados e fazendo consultas mais inteligentes

Salve galera, a questão era: "Calcule a quantidade de compras com datas inferiores a 12/05/2009 e que já foram recebidas. Cole a instrução SQL aqui quando acabar."

A minha instrução foi essa "SELECT COUNT(data < '2009-05-12') FROM COMPRAS where recebido = '1';"

Ela não trai o mesmo resultado da resposta correta: "SELECT COUNT(ID) FROM COMPRAS WHERE DATA < '2009-05-12' AND RECEBIDO = 1; "

Só gostaria de uma explicação , qual é o erro da minha lógica utilizada inicialmente.

4 respostas

André, Boa noite !

para fazer a contagem de elemento normalmente utilizamos o campo id . ou você pode até colocar *, para a contagem . ok !

relação as buscas , são paramentros para filtrar , quando pede datas inferiores 12/05/2009 e que ja foram recebidas .

então quando é feito SELECT COUNT(ID) FROM COMPRAS WHERE DATA < '2009-05-12' AND RECEBIDO = 1; "

ele está contando o total de compras que foi feito com esses paramentros .

no seu caso , ele somente contou todas as compras recebidas , é por isso que o resultado foi diferente :

não sei se consegui se fui claro ,

caso continue duvida poste aqui no forum ,

Bons Estudos

A função de COUNT utilizada para a consulta recebe como parâmetro a coluna que você deseja contar. Essa função, basicamente, irá iterar na tabela de acordo com o campo que você passar. Por exemplo, ao executar:

SELECT COUNT(id) FROM pessoas;

O Banco de Dados irá selecionar todos os IDs e irá contá-los.

Dessa forma, não podemos passar uma expressão para o COUNT pois ele apenas faz uma iteração sobre uma coluna. Qualquer FILTRAGEM que você faça deve ser utilizada no WHERE.

Espero ter ajudado.

Att,

Show galera, esclareceu totalmente então eu posso afirmar esse conceito nos meus sql's "Qualquer FILTRAGEM que você faça deve ser utilizada no WHERE."?

solução!

Pode sim André. É dessa forma que eu monto a minha SQL. Sempre que eu quero FILTRAR, eu utilizo o WHERE, pois é no WHERE que eu defino qual dado especificamente eu quero.

Veja:

WHERE marca = 'Fiat' // Filtrando carros pela Fiat WHERE data < '2015-08-01' // Filtrando data menor que 01/08/2015

E assim sucessivamente.

Att,

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software