See how many Products were sold in 2017

Asked

Viewed 59 times

0

I’m having difficulty making this query using BETWEEN, this is the model.inserir a descrição da imagem aqui

1 answer

1


Translating your data model to PL/PgSQL:

CREATE TABLE Cliente (
  idcliente BIGINT NOT NULL PRIMARY KEY,
  nome VARCHAR(60) NOT NULL,
  salario NUMERIC(10,2) NOT NULL,
  dataNascimento DATE NOT NULL,
  sexo VARCHAR(1) NOT NULL
);

CREATE TABLE Venda (
  idvenda BIGINT NOT NULL PRIMARY KEY,
  dataVenda DATE NOT NULL,
  valorTotal NUMERIC(10,2) NOT NULL,
  idCliente BIGINT NOT NULL,
  FOREIGN KEY (idvenda) REFERENCES Cliente(idcliente)
);

CREATE TABLE Produto (
  idproduto BIGINT NOT NULL PRIMARY KEY,
  nome VARCHAR(60) NOT NULL,
  dataValidade DATE,
  descricao VARCHAR(100) NOT NULL,
  marca VARCHAR(50) NOT NULL,
  valor NUMERIC(10,2) NOT NULL
);

CREATE TABLE VendaProduto (
  idvenda BIGINT NOT NULL,
  idproduto BIGINT NOT NULL,
  quantidade NUMERIC(10,2) NOT NULL,
  valotTotalProd NUMERIC(10,2) NOT NULL,
  PRIMARY KEY (idvenda, idproduto ),
  FOREIGN KEY (idvenda) REFERENCES Venda(idvenda),
  FOREIGN KEY (idproduto) REFERENCES Produto(idproduto)
);

Solution #1: Consult the total quantity of Produtos sold between 01/01/2017 and 31/12/2017:

SELECT
   sum(vp.quantidade)
FROM
  VendaProduto AS vp
JOIN
  Venda AS v ON ( v.idvenda = vp.idproduto )
WHERE
  v.dataVenda BETWEEN '2017-01-01' AND '2017-12-31';

Solution #2: Consult the total quantity of Produtos sold in the year of 2017:

SELECT
   sum(vp.quantidade)
FROM
  VendaProduto AS vp
JOIN
  Venda AS v ON ( v.idvenda = vp.idproduto )
WHERE
  EXTRACT( YEAR FROM v.dataVenda ) = 2017;

Sqlfiddle: http://sqlfiddle.com/#! 15/662a8/19

Browser other questions tagged

You are not signed in. Login or sign up in order to post.