Você está na página 1de 14

use trabalho;

CREATE TABLE Trabalhador (

numero integer NOT NULL,

nome VARCHAR(30),

dataNasc DATE,

especialidade VARCHAR(50),

CONSTRAINT PK_Trabalhador PRIMARY KEY (numero)

);

CREATE TABLE Produto (

codigoP integer NOT NULL,

designacaoP VARCHAR(40),

area DECIMAL(4,1),

numero integer NOT NULL,

CONSTRAINT fk_numero FOREIGN KEY (numero) REFERENCES Trabalhador(numero),

CONSTRAINT pk_codigo PRIMARY KEY (codigoP)

);

CREATE TABLE Comprador(

codigoC integer not null,

identificacaoC varchar(20),

enderecoC varchar(20),

telefoneC varchar (11),

CONSTRAINT pk_codigoC PRIMARY KEY(codigoC)

);

CREATE TABLE Venda(

codigoP integer not null,

codigoC integer not null,

dataV DATE,

quantidadeV integer,
valorV decimal(10,2),

dataReceb date,

constraint pk_dataV primary key(dataV,codigoP,codigoC),

constraint fk_codigoP foreign key (codigoP) references Produto(codigoP),

constraint fk_codigoC foreign key (codigoC) references Comprador(codigoC)

);

CREATE TABLE MateriaPrima(

codigoMp integer not null,

designacaoMp varchar(20),

quantArmaz integer not null,

constraint pk_codigoMp primary key (codigoMp)

);

CREATE TABLE Utiliza(

codigoMp integer not null,

codigoP integer not null,

dataU date,

quantidadeU integer not null,

constraint pk_dataU primary key (dataU,codigoMp,codigoP),

constraint fk_codigoP2 foreign key (codigoP) references Produto(codigoP),

constraint fk_codigoMp2 foreign key (codigoMp) references MateriaPrima(codigoMp)

);

CREATE TABLE Fornecedor (

codigoF integer not null ,

identificacaoF varchar(20),

enderecoF varchar(20) ,

telefoneF varchar(20),

constraint pk_codigoF primary key (codigoF)

);
CREATE TABLE Compra (

codigoMp integer not null,

codigoF integer not null,

dataC date not null,

quantidadeC integer,

valorC decimal(10,2),

dataPagam date,

constraint fk_codigoMp3 foreign key (codigoMp) references MateriaPrima(codigoMp),

constraint fk_codigoF foreign key(codigoF) references Fornecedor(codigoF),

constraint pk_dataC primary key(dataC,codigoMp,codigoF)

);

INSERT INTO Trabalhador (numero, nome, dataNasc, especialidade) VALUES

(1, 'João Dias', '1955-01-05', 'horticultor'),

(2, 'Luisa Ferreira', '1945-11-25', 'Jardineiro'),

(3, 'Márcio Souza', '1960-12-05', 'Motorista'),

(4, 'Joana Garcia', null, 'eng agrônomo'),

(5, 'Carlos Silva', '1975-07-15', 'eng florestal'),

(6, 'Ana Santos', '1985-08-20', 'biólogo'),

(7, 'Pedro Alves', '1990-09-25', 'zootecnista'),

(8, 'Maria Oliveira', '1995-10-30', 'veterinário'),

(9, 'Antônio Costa', '2000-11-05', 'eng de pesca');

INSERT INTO Produto (codigoP, designacaoP, area, numero) VALUES

(5, 'cenoura', 4.5, 4),

(6, 'feijão verde', 6.5, 1),

(7, 'batata', 2.6, 4),

(8, 'rosa', 1, 2),

(9, 'tomate', 3.5, 3),

(10, 'alface', 1.2, 4),


(11, 'couve', 2.3, 1),

(12, 'espinafre', 1.8, 2);

INSERT INTO Comprador (codigoC, identificacaoC, enderecoC, telefoneC) VALUES

(1, 'Manoel Maria', 'Rua X, 123', '(22) 2222-2222'),

(2, 'Luisa Fraga', 'Rua Z, 234', '(22) 2222-3333'),

(3, 'Duarte Silva', 'Av. Y, 645', '(22) 2222-4444'),

(4, 'João Santos', 'Rua W, 456', '(22) 2222-5555'),

(5, 'Maria Silva', 'Av. X, 789', '(22) 2222-6666'),

(6, 'Pedro Alves', 'Rua V, 012', '(22) 2222-7777'),

(7, 'Ana Costa', 'Av. W, 345', '(22) 2222-8888'),

(8, 'Carlos Pereira', 'Rua U, 678', '(22) 2222-9999');

INSERT INTO Venda (codigoP, codigoC, dataV, quantidadeV, valorV, dataReceb) VALUES

(5, 1, '2023-08-07', 450, 15000.00, '2023-08-07'),

(5, 2, '2023-10-02', 100, 2600.00, NULL),

(6, 2, '2023-08-05', 100, 1000.00, '2023-10-05'),

(8, 1, '2023-10-05', 400, 500.00, NULL),

(6, 3, '2023-09-29', 600, 6000.00, NULL),

(8, 4, '2023-10-07', 500, 1600.00, NULL),

(5, 2, '2023-08-02', 200, 2000.00, NULL),

(11, 7, '2023-08-13', 20, 500.00, '2023-08-13'),

(12, 8, '2023-08-14', 15, 375.00, '2023-08-14'),

(10, 3, '2023-08-15', 10, 250.00, '2023-08-15'),

(7, 6, '2023-08-16', 5, 125.00, '2023-08-16'),

(9, 5, '2023-08-17', 2, 50.00, '2023-08-17');

INSERT INTO Fornecedor (codigoF, identificacaoF, enderecoF, telefoneF) VALUES

(1, 'Ana Souza', 'Rua ZZZ, 55', '(22) 2222-2578'),

(2, 'João Dias', 'Rua F, 234', '(22) 2222-3355'),

(3, 'FertMax', 'Av. FF, 123', '(22) 2235-1234'),


(4, 'Agro Silva', 'Rua G, 456', '(22) 2245-5678'),

(5, 'Cultiva Bem', 'Av. GG, 789', '(22) 2256-7890'),

(6, 'Plantae', 'Rua H, 012', '(22) 2267-8901'),

(7, 'Terra Fértil', 'Av. HH, 345', '(22) 2278-9012'),

(8, 'Verde Vida', 'Rua I, 678', '(22) 2289-0123');

INSERT INTO MateriaPrima (codigoMP, designacaoMP, quantArmaz) VALUES

(1, 'semente cenoura', 100),

(2, 'adubo foliar', 500),

(3, 'fertilizante', 1000),

(4, 'semente batata', 200),

(5, 'semente tomate', 300),

(6, 'semente alface', 400),

(7, 'semente couve', 500),

(8, 'semente espinafre', 600);

INSERT INTO Compra (codigoMp, codigoF, dataC, quantidadeC, valorC, dataPagam) VALUES

(1, 1, '2023-04-07', 200, 5000.00, '2023-04-07'),

(2, 1, '2023-03-29', 100, 2500.00, '2023-03-20'),

(3, 2, '2023-05-01', 300, 7500.00, '2023-05-01'),

(4, 2, '2023-06-01', 400, 10000.00, '2023-06-01'),

(5, 3, '2023-07-01', 500, 12500.00, '2023-07-01'),

(6, 3, '2023-08-01', 600, 15000.00, '2023-08-01'),

(7, 4, '2023-09-01', 700, 17500.00, '2023-09-01'),

(8, 4, '2023-10-01', 800, 20000.00, '2023-10-01'),

(7, 5, '2023-11-01', 900, 22500.00, '2023-11-01'),

(6, 5, '2023-12-01', 1000, 25000.00, '2023-12-01'),

(3, 2, '2022-05-01', 300, 7500.00, null),

(4, 2, '2022-06-01', 400, 10000.00, null),

(5, 3, '2022-07-01', 500, 12500.00, null);


INSERT INTO Utiliza (codigoP, codigoMP, dataU, quantidadeU) VALUES

(6, 4, '2023-05-01', 600),

(7, 5, '2023-06-01', 700),

(8, 6, '2023-07-01', 800),

(9, 7, '2023-08-01', 900),

(10, 8, '2023-09-01', 1000),

(11, 1, '2023-10-01', 1100),

(12,2, '2023-11-01', 1200),

(5, 3, '2023-12-01', 1300),

(5, 4, '2024-01-01', 1400),

(6, 5, '2024-02-01', 1500);

SELECT nome, especialidade, dataNasc

FROM Trabalhador

WHERE especialidade IN ('horticultor', 'Jardineiro')

OR (dataNasc BETWEEN '1955-01-01' AND '1965-12-31');

SELECT T.nome, P.codigoP, P.designacaoP, P.area

FROM Trabalhador T

LEFT JOIN Produto P ON T.numero = P.numero

ORDER BY T.nome ASC, P.area DESC;

SELECT

P.codigoP,

P.designacaoP,

COUNT(V.codigoP) AS quantidade,

SUM(V.valorV) AS total

FROM

Produto P

JOIN

Venda V ON P.codigoP = V.codigoP


WHERE

V.dataReceb IS NULL

GROUP BY

P.codigoP, P.designacaoP

HAVING

SUM(V.valorV) >= 2000.00;

SELECT codigoC AS Codigo, identificacaoC AS Identificacao, 'Comprador' AS Tipo

FROM Comprador

UNION

SELECT codigoF AS Codigo, identificacaoF AS Identificacao, 'Fornecedor' AS Tipo

FROM Fornecedor

UNION ALL

SELECT numero AS Codigo, nome AS Identificacao, 'Trabalhador' AS Tipo

FROM Trabalhador

ORDER BY Identificacao ASC;

SELECT DISTINCT

MP.codigoMp,

MP.designacaoMp,

MP.quantArmaz,

P.designacaoP AS nomeProduto

FROM

MateriaPrima MP

JOIN

Utiliza U ON MP.codigoMp = U.codigoMp

JOIN

Produto P ON U.codigoP = P.codigoP;

SELECT

C.codigoMp,
C.codigoF,

C.dataC,

C.quantidadeC,

C.valorC,

C.dataPagam,

DATEDIFF(DATE(now()), C.dataC) AS dias_em_aberto,

F.identificacaoF AS identificacaoFornecedor,

F.enderecoF AS enderecoFornecedor,

F.telefoneF AS telefoneFornecedor

FROM

Compra C

JOIN

Fornecedor F ON C.codigoF = F.codigoF

WHERE

C.dataPagam IS NULL

AND DATEDIFF(CURDATE(), C.dataC) > 30;

SELECT

C.codigoC,

C.identificacaoC,

C.enderecoC,

C.telefoneC

FROM

Comprador C

LEFT JOIN

Venda V ON C.codigoC = V.codigoC

WHERE

V.codigoC IS NULL;

SELECT

P.codigoP,
P.designacaoP,

SUM(V.quantidadeV) AS quantidadeTotalVendida

FROM

Produto P

JOIN

Venda V ON P.codigoP = V.codigoP

GROUP BY

P.codigoP, P.designacaoP

ORDER BY

quantidadeTotalVendida DESC

LIMIT 1;

1-

2-
3-
4-

5-

πMP.codigoMp,MP.designacaoMp,MP.quantArmaz,P.designacaoP
(σMP.codigoMp=U.codigoMp∧U.codigoP=P.codigoP
(MateriaPrima⋈Utiliza⋈Produto))
6-
7-
9-

Você também pode gostar