Faça uma consulta que mostre o valor medio de vendas do ano de 2017 ? Por mim não tem sentido esta pergunta ?
43 Respostas
Pesquise sobre a função AVG que vai te fazer sentido…
Eu sei usar ela amigo , mas olha ai , ele quer o ano de 2017 , não tem o atributo ano , e o valor medio de vendas? eu fiz assim : select avg(valortotal) As valorMedio from venda ; será que é isso mesmo ?
Boa tarde…
Depende muito de como você deixou para o campo dataVenda
Tente o comando abaixo, qualquer coisa só de uma perfumada de acordo com sua tabela…
SELECT AVG(valorTotal) FROM Venda Where dataVenda Like %2017;
Mas o 2017 não aparece amigo ?
Mas o 2017 será preenchido ainda em sua tabela certo?
Até porque vai precisar das informações para calcular o valor
estou pensando em algo aqui , espera , eu tenho dataVenda, eu me esqueci disso , obrigado ai , acho que agora sei o que tenho que fazer ,obrigado ai .
Tranquilo,
Qualquer dúvida volte a perguntar…
Só acrescentando, após o WHERE, você também pode optar pelo BETWEEN
pensei nisso também , grato ai , eu lerdei aqui , mas acho que é o stress , o pgadmin4 me fez raiva de mais hoje , tive que trocar para o pgadmin3 , internet fazendo raiva , roteador desconfigurado ainda.
Sem problemas rsrs
Acaba tirando qualquer um do sério…
Boa sorte
Abraços
fiz assim cara e funfou
SELECT AVG(valorTotal) FROM Venda Where dataVenda between '03/01/2017’and ‘03/05/2017’ ;
Sim…
Com o between dá certo.
Mas ele somente irá levar valor entre essas datas que você estabeleceu('03/01/2017’ e ‘03/05/2017’)
Isto mesmo que ele queria , obrigado ai .
Você não disse o que sabia ou não, fica dificil adivinharmos não é mesmo?
E outra, sempre use as funções nativas do banco…
https://www.postgresql.org/docs/8.1/static/functions-datetime.html
E considere muito o que o @Nadall disse sobre o between…
No seu caso, melhor considerar apenas pelo ano…
SELECT AVG(valorTotal) FROM Venda
WHERE EXTRACT(YEAR FROM DATE dataVenda) = 2017;
E assim você vai brincando, conhecendo mais o banco e sua sintaxe SQL, boa sorte!
oi obrigado pela atenção , estou aprendendo ainda, me desculpe ai , se não fui preciso no que era para ser feito …
Oi me ajude em outra aqui se puder , eu fiz, mas tá meio estranho,
Sim, pode perguntar…
Quanto ao union, vou deixar vocês resolverem, mas a consulta mais acima sobre o cliente mais velho, aproveite que está estudando e já vai corrigindo sua lógica… evite usar subquery, elas pecam em performance, use sempre os recursos que o sql te dá, por exemplo…
select nome, MAX(salario), MAX(idade) from cliente;
Isso já mata sua questão e evita uma query dentro de outra… aproveite e extenda seus estudos pesquisando sobre funções de agrupamento e para que elas servem…
Primeiro, está certo o UNION ALL para duas tabelas diferentes?
No caso você está buscando da venda e da cliente…
Segundo, pelo que eu conheço(bem pouco de union)
A sintaxe do “union” é para realizar um distinct e elimina as linhas duplicadas.
E a “union all” que você usou, não faz o distinct, ele traz tudo…
Então na sua query, ele não está comparando as linhas, pois são tabelas e colunas diferentes, então está trazendo tudo assim misturado
oi , union ele une tabelas com atributos que tem mesmo tipo , aqui tem um exemplo parecido
SELECT id, mensagem FROM mensagem
UNION
SELECT código, localidade FROM postal
Sim, sua query os atributos são do mesmo tipo.
Tanto que ele trouxe…
Conforme você colocou no código
idvenda e valortotal
e logo abaixo
idCliente e salario
Bom, estou dizendo que levou pela query e sem ver sua tabela original com as informações.
O que eu quis dizer sobre a comparação e sobre ser tabelas diferentes…
Vou tentar dar um exemplo…
Usando a tabela venda.
Select idvenda, valorTotal from venda where dataVenda = 20/01/2017
union
Select idvenda, valorTotal from venda where dataVenda = 20/03/2017
Ele faria um distinct e iria trazer de acordo com o que estava no where, sem duplicadas.
E com o union all, iria trazer tudo, mesmo com duplicadas…
Em questão de union sou um pouco leigo, mas o jeito que você fez irá dar certo, mas irá trazer tudo embolado assim
entendi valeu , eu vi um video do boson treinamentos aqui no you tube, fica assim mesmo , uma salada, mas mesmo assim grato ai .
Espero não ter te confundido… kkk
Precisando, estou à disposição!
amigo , eu agora estacionei no minus, se sabe esta ? tenho prova hoje , se não pesquisaria com calma, o foda que a prova vai ser escrita.kkkk
Qual seria a dúvida?
Ele pega as linhas distintas de uma consulta e retorna as linhas que não aparecem em um segundo conjunto de resultados…
estou tentando pegar a idade , e não consigo neste :select *from cliente where idade<=45
minus select *from cliente where between 23 and 25;
Não faltou a condição idade no segundo conjunto?
O minus vai pegar os resultados do primeiro conjunto, que não tenha no segundo…
Nesse seu comando, ele vai pegar todos com <=45, cujo, não esteja entre 23 e 25…
Isto ai , eu entendi , só não sei por que não tá indo .
Me envie um print da sua tabela cliente preenchida por favor.
Voce corrigiu ela para :
select *from cliente where idade<=45
minus select *from cliente where idade between 23 and 25;
Se sim, me envie a mensagem que lhe apresenta ao tentar rodar
continua com erro .affs
Qual a mensagem de erro?
Conseguiu achar o erro ?
Eu uso o MySql, e não tem MINUS
Me desculpe pela demora…
Realize um teste por favor.
Tente fazer comparação entre duas tabelas diferentes para verificar se apresenta algum erro…
vou tentar entao
Espera , não faz sentido , por que o minus ele vai tirar os valores que estão na mesma tabela .
O operador MINUS devolve os registros que resultam do primeiro
SELECT e não aparecem no segundo
Espera , acho que já sei o que é, no postgres não existe este comando , então eu acho que é outro .
Agora foi , eu lembrei agora , é assim 
Não se usa o Minus no postgres, não iria dar certo nunca.kkkkkkkkkkkkkk
select idade from cliente where idade<=45
except select idade from cliente where idade between 23 and 35;
cara, eu resolvi , se tá ai ?
Bom dia,
Precisei entrar em um plantão na empresa.
Me desculpe pela ausência…
Então, no MySQL não utiliza… eu utilizo o NOT IN
No postgree também não então rsrs
Que bom que descobriu



