Pegar media de vendas de determinado mês

8 respostas
postgresqlmysqlsql
F

Gostaria de pegar a média das vendas do mês pela descrição do produto e não pela data com dia, mês e ano, mas não sei como pegar.

SELECT AVG(vend_qtde) AS qtde_vendas from tb_vendas WHERE esto_descricao like '% Saco pedra %' and vend_data like '% 03/01/2018 %'  GROUP BY esto_descricao;

8 Respostas

B

Você tentou apenas retirando o esta parte?
and vend_data like '% 03/01/2018 %'

O select ficará assim:

SELECT AVG(vend_qtde) AS qtde_vendas from tb_vendas WHERE esto_descricao like '% Saco pedra %' GROUP BY esto_descricao;

R

Dessa forma ele pegará de todos os meses, não apenas o mês em que está.

Para melhor te ajudar, poste o esquema do banco de dados.

F
CREATE TABLE tb_vendas
 (
  vend_cod serial NOT NULL,
  esto_descricao character(30) NOT NULL,
  vend_preco double precision,
  vend_qtde integer,
  vend_nome_cliente character(35),
  vend_cep character(20),
 vend_bairro character(25),
 vend_endereco character(38),
 vend_estado character(20),
 vend_uf character(13),
  vend_data character(20),
 vend_hora character(20),
 CONSTRAINT tb_vendas_pkey PRIMARY KEY (esto_descricao, vend_cod)
 )

R

SELECT AVG(vend_qtde) AS qtde_vendas from tb_vendas WHERE esto_descricao like '% Saco pedra %' and VAR_MES = MONTH(str_to_date(vend_data, '%d/%m/%Y'))

Acho que isso vai funcionar pro seu caso.

F

Coloquei esse comando para retornar a media das vendas de acordo com a descrição e que esteja entre as datas

SELECT AVG(vend_qtde) AS qtde_vendas from tb_vendas WHERE esto_descricao like '%"  descricao  "%' and vend_data between '01-01-2018' and '31-01-2018'   GROUP BY esto_descricao;

Mas ele não retorna nenhum resultado

Registros

R

Repare que no seu banco as datas estão declaradas como carácter e não estão seguindo um padrão, sendo assim você tem duas opções
Mudar seu banco para aceitar apenas o tipo date (o que eu recomendo) ou transformar sempre para o tipo date nas suas consultas e no padrão que você quer, como fiz no exemplo que te passei.

F

como irei fazer uma consulta que eu quero, igual seguindo o exemplo que você me passou ?
SELECT AVG(vend_qtde) AS qtde_vendas from tb_vendas WHERE esto_descricao like '% Saco pedra %' and VAR_MES = MONTH(str_to_date(vend_data, '%d/%m/%Y'))

R

Repare que na query que eu passei, transformei a sua vend_data no tipo data com str_to_date no formato dia/mes/ano e isso te da a possibilidade de utilizar as funções de data, como pegar somente o Mês que é oque você quer

Criado 4 de janeiro de 2018
Ultima resposta 9 de jan. de 2018
Respostas 8
Participantes 3