Faça uma consulta que mostre o valor medio de vendas do ano de 2017 ? Por mim não tem sentido esta pergunta ?

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

1 curtida

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’)

2 curtidas

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 …

1 curtida

Oi me ajude em outra aqui se puder , eu fiz, mas tá meio estranho,

Sim, pode perguntar…

sobre a tabela union , no postgres fica uma salada , é isso mesmo ?

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…

1 curtida

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