-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreatedb.sql
More file actions
141 lines (105 loc) · 3.35 KB
/
createdb.sql
File metadata and controls
141 lines (105 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
CREATE TABLE CUSTOMER (
ID SERIAL PRIMARY KEY,
GENDER VARCHAR(10),
PHONENUMBER VARCHAR(25),
FIRSTNAME VARCHAR(100),
LASTNAME VARCHAR(100)
)
CREATE TABLE BRANDS(
ID SERIAL PRIMARY KEY,
NAME VARCHAR(30)
)
CREATE TABLE TYPE(
ID SERIAL PRIMARY KEY,
NAME VARCHAR(30)
)
CREATE TABLE PRODUCTS(
ID SERIAL PRIMARY KEY,
TYPEID SERIAL,
AMOUNT DECIMAL,
NAME VARCHAR(40),
BRANDID SERIAL,
EXPIRATIONDATE DATE,
CONSTRAINT fk_product_type FOREIGN KEY(TYPEID) REFERENCES TYPE(ID),
CONSTRAINT fk_product_brand FOREIGN KEY(BRANDID) REFERENCES BRANDS(ID)
)
CREATE TABLE PURCHASES(
ID SERIAL PRIMARY KEY,
ADRESS VARCHAR(100),
CUSTOMERID SERIAL,
CREDITCARD VARCHAR(20),
TOTALAMOUNT DECIMAL,
PURCHASEDATE DATE,
CONSTRAINT fk_purchases_customerID FOREIGN KEY(CUSTOMERID) REFERENCES CUSTOMER(ID)
)
CREATE TABLE PURCHASEPRODUCT(
ID SERIAL PRIMARY KEY,
PRODUCTID SERIAL,
PURCHASEID SERIAL,
CONSTRAINT fk_purchaseproduct_product FOREIGN KEY(PRODUCTID) REFERENCES PRODUCTS(ID),
CONSTRAINT fk_purchaseproduct_purchase FOREIGN KEY(PURCHASEID) REFERENCES PURCHASES(ID)
)
SELECT B.name, count(*) TOTALSALES FROM PRODUCTS PR
LEFT JOIN BRANDS B ON B.ID = PR.BRANDID
LEFT JOIN PURCHASEPRODUCT PP ON PP.PRODUCTID = PR.ID
WHERE B.NAME = 'KREATIN'
GROUP BY B.NAME
ORDER BY TOTALSALES DESC
LIMIT 1
SELECT SUM(PUR.TOTALAMOUNT) FROM PURCHASEPRODUCT PP
LEFT JOIN PRODUCTS PR ON PR.ID = PP.PRODUCTID
LEFT JOIN PURCHASES PUR ON PUR.ID = PP.PURCHASEID
WHERE PR.BRANDID = 4 AND PUR.PURCHASEDATE BETWEEN '2015/01/01' AND '2020-12-31'
SELECT CR.GENDER, COUNT(*) TOTALSALES FROM PURCHASEPRODUCT PP
LEFT JOIN PRODUCTS PR ON PR.ID = PP.PRODUCTID
LEFT JOIN PURCHASES PUR ON PUR.ID = PP.PURCHASEID
LEFT JOIN CUSTOMER CR ON CR.ID = PUR.CUSTOMERID
WHERE PR.NAME = 'L KAMITIN' AND PUR.PURCHASEDATE BETWEEN '2015/01/01' AND '2020/12/31'
GROUP BY CR.GENDER
HAVING count(*)>4
CREATE TABLE EMPLOYEE(
ID SERIAL PRIMARY KEY,
TITLE VARCHAR(12),
PERSONID SERIAL,
CONSTRAINT fk_person_id FOREIGN KEY(PERSONID) REFERENCES PERSON(ID)
)
CREATE TABLE SALARY(
ID SERIAL PRIMARY KEY,
AMOUNT DECIMAL,
MONTH VARCHAR(6),
EMPLOYEEID SERIAL,
CONSTRAINT fk_employee_ID FOREIGN KEY(EMPLOYEEID) REFERENCES EMPLOYEE(ID)
)
CREATE TABLE CAMPAIGN(
ID SERIAL PRIMARY KEY,
PRODUCTID SERIAL,
RATE DECIMAL,
NAME VARCHAR(15),
DURATION DECIMAL,
CONSTRAINT fk_product_ID FOREIGN KEY(PRODUCTID) REFERENCES PRODUCTS(ID)
)
CREATE TABLE PRODUCTNEWS(
ID SERIAL PRIMARY KEY,
CONTENT VARCHAR(5),
ISPUBLISHED BOOLEAN ,
EMPLOYEEID SERIAL,
PRODUCTID SERIAL,
CONSTRAINT fk_employee_ID FOREIGN KEY(EMPLOYEEID) REFERENCES EMPLOYEE(ID),
CONSTRAINT fk_product_ID FOREIGN KEY(PRODUCTID) REFERENCES PRODUCTS(ID)
)
insert into brands
("name") values ('NESTLE')
insert into "type"
("name") values ('POWDER')
create view vw_salesReport as
select pr."name" as Name, b."name" as BrandName, t."name" as TypeName,
pr.amount as Amount, pe.firstname as CustomerName
from purchaseproduct pp
left join products pr on pr.id = pp.productid
left join purchases pu on pu.id = pp.purchaseid
left join brands b on b.id = pr.brandid
left join "type" t on t.id = pr.typeid
left join customer c on c.id = pu.customerid
left join person pe on pe.id = c.personid
ALTER TABLE PRODUCTNEWS
ALTER COLUMN CONTENT TYPE VARCHAR(50)