Eu também criei o banco e algumas consultas... se quiser ver:
-- OQUE GERAR NOS RELATORIOS?
//relatorio de produtos:
-> quantidade vendida de cada produto no mes
select p.nome, sum(pc.quantidade) from ocupacao o,produto p, produtosconsumidos pc where p.idProduto = pc.idProduto AND EXTRACT(YEAR FROM o.entrada) = 2011 AND EXTRACT(MONTH FROM o.entrada) = 02 group by p.nome
-> relatorio de produtos COM estoque
select * from produto where quantidade != 0
-> relatorio de produtos SEM estoque
select * from produto where quantidade = 0
//Relatorio mesa:
-> quantas ocupacoes teve cada mesa no mes (assim sabera qual mesa é mais visitada)
select count(*), idMesa from ocupacao o where EXTRACT(YEAR FROM o.entrada) = 2011 AND EXTRACT(MONTH FROM o.entrada) = 02 group by idMesa
-> quantos rendeu cada mesa (qual mesa os clientes preferem sentar e consumir)
select m.idMesa, sum(pc.total) from mesa m, ocupacao o, produtosconsumidos pc where m.idMesa = o.idMesa and o.idOcupacao = pc.idOcupacao AND EXTRACT(YEAR FROM o.entrada) = 2011 AND EXTRACT(MONTH FROM o.entrada) = 02 group by m.idMesa
//Relatorio Financeiro:
-> total do mes
select sum(pc.total) from ocupacao o, produtosconsumidos pc where o.idOcupacao = pc.idOcupacao AND EXTRACT(YEAR FROM o.entrada) = 2011 AND EXTRACT(MONTH FROM o.entrada) = 02
-> total do ano
select sum(pc.total) from ocupacao o, produtosconsumidos pc where o.idOcupacao = pc.idOcupacao AND EXTRACT(YEAR FROM o.entrada) = 2011
-> total "de tudo" (desda abertura, ou utilização do programa)
select sum(pc.total) from ocupacao o, produtosconsumidos pc where o.idOcupacao = pc.idOcupacao
/////////CRIACAO DAS TABELAS
CREATE TABLE PRODUTO(
idProduto serial primary key,
nome varchar,
preco float,
quantidade int
);
create table MESA(
idMesa integer primary key
);
CREATE TABLE OCUPACAO(
idOcupacao Serial primary key,
idMesa integer references mesa(idMesa),
entrada timestamp,
saida timestamp
);
CREATE TABLE PRODUTOSCONSUMIDOS(
idProdutosConsumidos Serial primary key,
idOcupacao integer references ocupacao(idOcupacao),
idProduto integer references produto(idProduto),
quantidade integer,
total float
);
/////////POVOAMENTO
insert into mesa values (1);
insert into mesa values (2);
insert into mesa values (3);
insert into mesa values (4);
insert into mesa values (5);
insert into mesa values (6);
insert into mesa values (7);
insert into mesa values (8);
insert into mesa values (9);
insert into mesa values (10);
insert into mesa values (11);
insert into mesa values (12);
insert into mesa values (13);
insert into mesa values (14);
insert into mesa values (15);
insert into mesa values (16);
insert into mesa values (17);
insert into mesa values (18);
insert into mesa values (19);
insert into mesa values (20);
insert into produto (nome,preco,quantidade) values ('Trident',1.0,100);
insert into produto (nome,preco,quantidade) values ('Pao de queijo',1.0,100);
insert into produto (nome,preco,quantidade) values ('Salgadinho',1.0,100);
insert into produto (nome,preco,quantidade) values ('Mini Pizza',1.5,100);
insert into produto (nome,preco,quantidade) values ('Coxinha',1.25,100);
insert into produto (nome,preco,quantidade) values ('Mini Coca-Cola',1.0,100);
insert into produto (nome,preco,quantidade) values ('Skol Lata',1.5,100);
insert into produto (nome,preco,quantidade) values ('Brahma Lata',1.25,100);
insert into produto (nome,preco,quantidade) values ('Skol Litrao',3.0,100);
insert into produto (nome,preco,quantidade) values ('Ficha Sinuca',0.5,100);
insert into produto (nome,preco,quantidade) values ('Bala',0.10,100);
insert into produto (nome,preco,quantidade) values ('Nova Skin Garrafa',2.0,100);
insert into ocupacao (idMesa,entrada, saida) values (1, '29/05/2010 09:42', '29/05/2011 11:02');
insert into ocupacao (idMesa,entrada, saida) values (2, '11/01/2010 07:42', '11/01/2011 08:20');
insert into ocupacao (idMesa,entrada, saida) values (3, '09/02/2010 20:30', '09/02/2010 21:00');
insert into ocupacao (idMesa,entrada, saida) values (4, '12/05/2010 09:42', '12/05/2011 11:02');
insert into ocupacao (idMesa,entrada, saida) values (5, '15/04/2010 12:04', '15/04/2011 13:02');
insert into ocupacao (idMesa,entrada) values (1, '01/02/2011 22:40');
insert into ocupacao (idMesa,entrada) values (2, '01/02/2011 20:00');
insert into ocupacao (idMesa,entrada) values (3, '01/02/2011 17:30');
insert into ocupacao (idMesa,entrada) values (4, '01/02/2011 18:40');
insert into ocupacao (idMesa,entrada) values (5, '01/02/2011 09:42');
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (1,1,2,2);
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (2,2,2,2);
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (3,3,2,2);
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (4,4,2,3);
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (5,5,2,2.5);
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (6,6,4,4);
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (7,7,4,6);
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (8,8,4,5);
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (9,9,4,12);
insert into produtosconsumidos (idOcupacao,idProduto,quantidade,total) values (10,10,4,2);
//Consultas
---> OCUPACOES
Selecionar todas as ocupações da mesa 5
select * from ocupacao where idmesa = 5;
Todas as ocupações no ano tal
select * from ocupacao where EXTRACT(YEAR FROM entrada) = 2011;
Descobrir qual ocupacao ainda nao fechou efetuou a 'saida'
select * from ocupacao where saida IS NULL
Descobrir todas ocupacoes fechadas
select * from ocupacao where NOT(saida IS NULL)
qual ID da ocupacao da mesa ainda nao saiu
select idocupacao from ocupacao where (saida IS NULL) AND idmesa = 1
selecionar quantas ocupacoes teve cada mesa
select count(*), idMesa from ocupacao group by idMesa
---> ESTOQUE
Selecionar produtos no estoque
select * from produto where quantidade != 0
---> Vendas
selecionar o total de todos os produtos consumidos
select total from produtosconsumidos
selecionar a SOMA do total de todos os produtos consumidos
select SUM(total) from produtosconsumidos
selecionar a soma total consumida pela ocupacao
select sum(total) from ProdutosConsumidos where idOcupacao = 4
selecionar a soma do total consumido pela MESA
select sum(pc.total) from mesa m, ocupacao o, produtosconsumidos pc where m.idMesa = o.idMesa and o.idOcupacao = pc.idOcupacao and m.idMesa = 5
selecionar a soma das vendas de todas as mesas no MES X
select sum(pc.total) from ocupacao o, produtosconsumidos pc where o.idOcupacao = pc.idOcupacao AND EXTRACT(YEAR FROM o.entrada) = 2011 AND EXTRACT(MONTH FROM o.entrada) = 02