Você está na página 1de 2

CREATE TABLE Cliente(

Codigo Serial PRIMARY KEY,


Nome varchar,
Data_Nasc date
);

CREATE TABLE Produto(


Codigo Serial PRIMARY KEY,
Nome varchar,
Preco float
);

CREATE TABLE Venda(


Codigo Serial PRIMARY KEY,
Data date,
Hora time,
ID_Cliente integer,
FOREIGN KEY (ID_Cliente) references Cliente(Codigo)
);

CREATE TABLE Lista_Venda(


ID Serial PRIMARY KEY,
ID_Produto integer,
ID_Venda integer,
FOREIGN KEY (ID_Produto) references Produto(Codigo),
FOREIGN KEY (ID_Venda) references Venda(Codigo)
);

-- Inserir dados na tabela Cliente


INSERT INTO Cliente (Nome, Data_Nasc) VALUES
('João Silva', '1990-01-15'),
('Maria Oliveira', '1985-05-20'),
('Pedro Santos', '1998-11-30');

-- Inserir dados na tabela Cliente


INSERT INTO Cliente (Nome, Data_Nasc) VALUES
('João Silva', '1990-01-15'),
('Maria Oliveira', '1985-05-20'),
('Pedro Santos', '1998-11-30');

-- Inserir dados na tabela Produto


INSERT INTO Produto (Nome, Preco) VALUES
('Produto A', 19.99),
('Produto B', 29.99),
('Produto C', 14.50);

-- Inserir dados na tabela Venda


INSERT INTO Venda (Data, Hora, ID_Cliente) VALUES
('2024-01-18', '10:30:00', 1),
('2024-01-18', '14:45:00', 2),
('2024-01-19', '09:15:00', 3),
('2024-01-20', '11:00:00', 1),
('2024-01-21', '15:30:00', 2),
('2024-01-22', '10:00:00', 3);

-- Inserir dados na tabela Lista_Venda


INSERT INTO Lista_Venda (ID_Produto, ID_Venda) VALUES
(1, 1),
(2, 1),
(3, 2),
(1, 3),
(3, 3),
(2, 4),
(3, 4),
(1, 5),
(2, 5),
(3, 5);

SELECT c.Nome, count(DISTINCT v.Codigo) AS Num_Vendas


FROM Lista_Venda lv
JOIN Venda v ON lv.ID_Venda = v.Codigo
JOIN Cliente c ON v.ID_Cliente = c.Codigo
GROUP BY c.Nome HAVING count(DISTINCT v.Codigo) > 1
ORDER BY Num_Vendas DESC;

SELECT c.Nome AS Cliente, p.Nome AS Produto, count(lv.ID_Produto) AS


Quantidade_Total
FROM Lista_Venda lv
JOIN Venda v ON lv.ID_Venda = v.Codigo
JOIN Cliente c ON v.ID_Cliente = c.Codigo
JOIN Produto p ON lv.ID_Produto = p.Codigo
GROUP BY c.Nome, p.Nome HAVING count(lv.ID_Produto) > 1
ORDER BY Cliente, Quantidade_Total DESC;

SELECT c.Nome, count(lv.ID_Produto) AS Qtd_Produtos


FROM Lista_Venda lv
JOIN Venda v ON lv.ID_Venda = v.Codigo
JOIN Cliente c ON v.ID_Cliente = c.Codigo
GROUP BY c.Nome HAVING count(lv.ID_Produto) > 10
ORDER BY Qtd_Produtos DESC;

Você também pode gostar