· 8 years ago · Aug 27, 2018, 12:12 AM
1drop view BalanceCompras;
2drop view BalanceNominas;
3drop view BalanceVentas;
4drop table if exists CompraXInsumo;
5drop table if exists Compra;
6drop table if exists NominaXEmpleado;
7drop table if exists Nomina;
8drop table if exists VentaXProducto;
9drop table if exists Venta;
10
11
12create table Nomina(
13 Id serial not null,
14 Mes int not null,
15 Anio int not null,
16 CONSTRAINT PK_NOMINA PRIMARY KEY(Id)
17);
18create table NominaXEmpleado(
19 IdNomina int not null references Nomina(Id),
20 CedulaEmpleado varchar(25) not null,
21 NombreEmpleado varchar(25) not null,
22 Apellidos varchar(25) not null,
23 LaborEmpleado varchar(25) not null,
24 SalarioMensual int not null,
25 SalarioCarga int not null
26);
27
28
29create table Venta(
30 Id serial not null,
31 NombreCliente varchar(25) not null,
32 Fecha date not null,
33 LocalComercial varchar(25) not null,
34 CedJuridica varchar(15) not null,
35 Telefono varchar(10) not null,
36 CONSTRAINT PK_PRODUCTO PRIMARY KEY(Id)
37);
38
39create table VentaXProducto(
40 IdVenta int not null REFERENCES Venta(Id),
41 NombreProducto varchar(25) not null,
42 Cantidad int not null,
43 Area varchar(25) not null,
44 PrecioUnitario int not null,
45 ImpuestoUnitario int not null
46);
47
48
49create table Compra(
50 Id serial not null,
51 NumFactura varchar(25) not null,
52 NombreProveedor varchar(25) not null,
53 Fecha date not null,
54 CONSTRAINT PK_COMPRA PRIMARY KEY (Id)
55);
56
57
58create table CompraXInsumo(
59 IdInsumo int not null,
60 IdFactura int not null REFERENCES Compra(Id),
61 Cantidad int not null,
62 PrecioUnitario int not null,
63 ImpuestoUnitario int not null
64
65);
66
67
68
69-- POR AÑO SUBT Y TOTAL DE COMPRAS
70create view BalanceCompras as
71 SELECT extract(year from C.Fecha) as Anio,SUM(CI.PrecioUnitario*CI.Cantidad) as SubTotal, ceil(SUM((((CI.ImpuestoUnitario::decimal /100)*CI.PrecioUnitario)+CI.PrecioUnitario)*CI.Cantidad)) as Total
72 FROM Compra as C INNER JOIN CompraXInsumo as CI ON (C.Id = CI.IdFactura) group by Anio;
73
74-- POR AÑO TOTAL CON CARGAS DE NOMINAS
75create view BalanceNominas as
76 SELECT N.Anio,SUM(NE.SalarioMensual + NE.SalarioCarga) as Total
77 FROM Nomina as N INNER JOIN NominaXEmpleado as NE ON (N.Id = NE.IdNomina) group by N.Anio;
78
79
80
81--POR AÑO SUBT Y TOTAL DE VENTAS
82create view BalanceVentas as
83 SELECT extract(year from V.Fecha) as Anio,SUM(VP.PrecioUnitario*VP.Cantidad) as SubTotal, ceil(SUM((((VP.ImpuestoUnitario::decimal /100)*VP.PrecioUnitario)+VP.PrecioUnitario)*VP.Cantidad)) as Total
84 FROM Venta as V INNER JOIN VentaXProducto as VP ON (V.Id = VP.IdVenta) group by Anio;
85
86
87
88
89
90insert into VentaXProducto values(1,'Garbanzos',5,'Las Mantas',2000,13);
91insert into VentaXProducto values(1,'Atun',10,'Las Catalinas',2000,13);
92insert into VentaXProducto values(1,'Aceite',5,'Las Margaritas',2000,13);
93insert into VentaXProducto values(1,'Natilla',10,'Las Marinelas',1000,13);
94insert into VentaXProducto values(1,'Papas',1,'Recicladoras',800,13);
95insert into VentaXProducto values(1,'Cafe',2,'MamaLucha',2000,13);
96
97insert into VentaXProducto values(2,'Frijoles',1,'MercadoTEC',4000,13);
98insert into VentaXProducto values(2,'Arroz',5,'Los TEC',5000,13);
99insert into VentaXProducto values(2,'Cafe',1,'MamaLucha',2000,13);
100insert into VentaXProducto values(2,'Papas',5,'Recicladoras',800,13);
101insert into VentaXProducto values(2,'Aceite',10,'Las Margaritas',2000,13);
102
103
104insert into VentaXProducto values(3,'Natilla',5,'Las Marinelas',1000,13);
105insert into VentaXProducto values(3,'Papas',2,'Recicladoras',800,13);
106insert into VentaXProducto values(3,'Cafe',1,'MamaLucha',2000,13);
107insert into VentaXProducto values(3,'Arroz',4,'Los TEC',5000,13);
108insert into VentaXProducto values(3,'Frijoles',3,'MercadoTEC',4000,13);
109insert into VentaXProducto values(3,'Garbanzos',1,'Las Mantas',2000,13);
110
111
112insert into VentaXProducto values(4,'Atun',2,'Las Catalinas',2000,13);
113insert into VentaXProducto values(4,'Garbanzos',1,'Las Mantas',2000,13);
114insert into VentaXProducto values(4,'Aceite',10,'Las Margaritas',2000,13);
115insert into VentaXProducto values(4,'Natilla',4,'Las Marinelas',1000,13);
116insert into VentaXProducto values(4,'Frijoles',2,'MercadoTEC',4000,13);
117insert into VentaXProducto values(4,'Papas',10,'Recicladoras',800,13);
118
119
120insert into VentaXProducto values(5,'Atun',2,'Las Catalinas',2000,13);
121insert into VentaXProducto values(5,'Garbanzos',1,'Las Mantas',2000,13);
122insert into VentaXProducto values(5,'Cafe',1,'MamaLucha',2000,13);
123insert into VentaXProducto values(5,'Natilla',4,'Las Marinelas',1000,13);
124insert into VentaXProducto values(5,'Frijoles',2,'MercadoTEC',4000,13);
125insert into VentaXProducto values(5,'Papas',10,'Recicladoras',800,13);
126insert into VentaXProducto values(5,'Arroz',5,'Los TEC',5000,13);
127
128
129insert into VentaXProducto values(6,'Garbanzos',5,'Las Mantas',2000,13);
130insert into VentaXProducto values(6,'Atun',10,'Las Catalinas',2000,13);
131insert into VentaXProducto values(6,'Aceite',5,'Las Margaritas',2000,13);
132insert into VentaXProducto values(6,'Natilla',10,'Las Marinelas',1000,13);
133insert into VentaXProducto values(6,'Papas',1,'Recicladoras',800,13);
134insert into VentaXProducto values(6,'Cafe',2,'MamaLucha',2000,13);
135
136
137insert into VentaXProducto values(7,'Garbanzos',5,'Las Mantas',2000,13);
138insert into VentaXProducto values(7,'Atun',10,'Las Catalinas',2000,13);
139insert into VentaXProducto values(7,'Aceite',5,'Las Margaritas',2000,13);
140insert into VentaXProducto values(7,'Natilla',10,'Las Marinelas',1000,13);
141
142
143
144
145insert into Venta(NombreCliente,Fecha,LocalComercial,CedJuridica,Telefono) values('Marcos','14/8/2018','Megasuper','3024150012','27184576');
146insert into Venta(NombreCliente,Fecha,LocalComercial,CedJuridica,Telefono) values('Luis','14/8/2015','Megasuper','3024150012','27184576');
147insert into Venta(NombreCliente,Fecha,LocalComercial,CedJuridica,Telefono) values('Maria','14/8/2016','Megasuper','3024150012','27184576');
148insert into Venta(NombreCliente,Fecha,LocalComercial,CedJuridica,Telefono) values('Freddy','14/8/2017','Megasuper','3024150012','27184576');
149insert into Venta(NombreCliente,Fecha,LocalComercial,CedJuridica,Telefono) values('Freddy','14/4/2016','Megasuper','3024150012','27184576');
150
151insert into Venta(NombreCliente,Fecha,LocalComercial,CedJuridica,Telefono) values('Freddy','14/4/2014','Megasuper','3024150012','27184576');
152insert into Venta(NombreCliente,Fecha,LocalComercial,CedJuridica,Telefono) values('Maria','14/2/2018','Megasuper','3024150012','27184576');
153
154
155
156insert into Compra (NumFactura,NombreProveedor,Fecha) values('123456','wallmart','14/8/2018');
157insert into Compra (NumFactura,NombreProveedor,Fecha) values('123654','ElPais','14/8/2017');
158insert into Compra (NumFactura,NombreProveedor,Fecha) values('321456','Clotilde','14/8/2016');
159insert into Compra (NumFactura,NombreProveedor,Fecha) values('456654','wallmart','14/2/2016');
160insert into Compra (NumFactura,NombreProveedor,Fecha) values('987654','wallmart','14/1/2015');
161insert into Compra (NumFactura,NombreProveedor,Fecha) values('789654','wallmart','14/4/2018');
162
163select * from Compra;
164
165insert into CompraXInsumo values(1,1,5,5000,13);
166insert into CompraXInsumo values(2,1,5,5000,13);
167insert into CompraXInsumo values(3,1,10,5000,13);
168insert into CompraXInsumo values(5,1,2,5000,13);
169
170insert into CompraXInsumo values(2,4,2,5000,13);
171insert into CompraXInsumo values(3,4,10,5000,13);
172insert into CompraXInsumo values(4,4,5,5000,13);
173insert into CompraXInsumo values(1,4,5,5000,13);
174
175insert into CompraXInsumo values(6,3,5,5000,13);
176insert into CompraXInsumo values(5,3,5,5000,13);
177insert into CompraXInsumo values(4,3,8,5000,13);
178insert into CompraXInsumo values(3,3,10,5000,13);
179
180insert into CompraXInsumo values(2,5,10,5000,13);
181insert into CompraXInsumo values(5,5,10,5000,13);
182insert into CompraXInsumo values(6,5,10,5000,13);
183insert into CompraXInsumo values(1,5,20,5000,13);
184insert into CompraXInsumo values(3,5,30,5000,13);
185
186
187insert into CompraXInsumo values(2,6,20,5000,13);
188insert into CompraXInsumo values(4,6,30,5000,13);
189insert into CompraXInsumo values(6,6,15,5000,13);
190insert into CompraXInsumo values(5,6,3,5000,13);
191select * from CompraXInsumo;
192
193Insert into Nomina (Mes,Anio) values(8,2018);
194Insert into Nomina (Mes,Anio) values(7,2016);
195Insert into Nomina (Mes,Anio) values(4,2015);
196Insert into Nomina (Mes,Anio) values(9,2018);
197select * from Nomina;
198
199insert into NominaXEmpleado values(1,'702550708','Luis','Araya Aragon','Cargador',10000,15000);
200insert into NominaXEmpleado values(1,'602210128','Mario','Altamirano Aragon','Inspector',20000,30000);
201insert into NominaXEmpleado values(1,'123456789','Fred','Mazukic Aragon','Inspector',50000,75000);
202insert into NominaXEmpleado values(1,'287654321','Marta','Barrantes Aragon','Cargador',90000,135000);
203
204insert into NominaXEmpleado values(2,'287654321','Marta','Barrantes Aragon','Cargador',90000,135000);
205insert into NominaXEmpleado values(2,'456789123','Allan','Barquero Aragon','Cargador',80000,120000);
206insert into NominaXEmpleado values(2,'127654321','Heiner','Salvatierra Aragon','Inspector',60000,90000);
207insert into NominaXEmpleado values(2,'123456789','Fred','Manzukic Aragon','Inspector',50000,75000);
208
209insert into NominaXEmpleado values(3,'287654321','Marta','Barrantes Aragon','Cargador',90000,135000);
210insert into NominaXEmpleado values(3,'702550708','Luis','Araya Aragon','Cargador',10000,15000);
211insert into NominaXEmpleado values(3,'602210128','Mario','Altamirano Aragon','Inspector',20000,30000);
212
213insert into NominaXEmpleado values(4,'287654321','Marta','Barrantes Aragon','Cargador',90000,135000);
214insert into NominaXEmpleado values(4,'127654321','Heiner','Salvatierra Aragon','Inspector',60000,90000);
215insert into NominaXEmpleado values(4,'123456789','Fred','Manzukic Aragon','Inspector',50000,75000);
216
217
218
219
220select BC.Anio,
221SUM((case when (BC.SubTotal is null) then 0 else BC.SubTotal END)) as SubTotalCompras,SUM(case when (BC.Total is null) then 0 else BC.Total END) as TotalCompras,
222SUM(case when (BN.Total is null) then 0 else BN.Total END) as TotalNominasCargas, SUM(case when(BV.SubTotal is null) then 0 else BV.SubTotal END) as SubTotalVentas,
223SUM(case when(BV.Total is null) then 0 else BV.Total end) as TotalVentas,
224(SUM(case when(BV.Total is null) then 0 else BV.Total end) - (SUM(case when (BC.Total is null) then 0 else BC.Total end) + SUM(case when (BN.Total is null)then 0 else BN.Total end))) as BalanceAnual
225FROM BalanceVentas as BV full outer join BalanceCompras as BC on BC.Anio = BV.Anio
226full outer join BalanceNominas as BN on BN.Anio = BC.Anio group by BC.Anio;