-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabases - active.sql
More file actions
170 lines (149 loc) · 5.82 KB
/
databases - active.sql
File metadata and controls
170 lines (149 loc) · 5.82 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
CREATE TABLE active_info
(
active_id INT GENERATED ALWAYS AS IDENTITY,
fio VARCHAR(255),
mail VARCHAR(255),
interests VARCHAR(255),
groups VARCHAR(255),
dorm INT,
PRIMARY KEY (active_id)
);
CREATE TABLE department
(
dep_id INT GENERATED ALWAYS AS IDENTITY,
dep_name VARCHAR(255),
boss_id INT,
descr VARCHAR(255),
PRIMARY KEY (dep_id),
FOREIGN KEY (boss_id) REFERENCES active_info(active_id)
);
CREATE TABLE active_profkom
(
id INT,
department_id INT,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES active_info(active_id),
FOREIGN KEY (department_id) REFERENCES department(dep_id)
);
CREATE TABLE active_mki
(
id INT,
department_id INT,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES active_info(active_id),
FOREIGN KEY (department_id) REFERENCES department(dep_id)
);
CREATE TABLE active_231
(
id INT,
department_id INT,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES active_info(active_id),
FOREIGN KEY (department_id) REFERENCES department(dep_id)
);
CREATE TABLE active_other
(
id INT,
department_id INT,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES active_info(active_id),
FOREIGN KEY (department_id) REFERENCES department(dep_id)
);
CREATE TABLE cases
(
case_id INT GENERATED ALWAYS AS IDENTITY,
depart_id INT,
act_id INT,
case_date VARCHAR(255),
problem VARCHAR(255),
PRIMARY KEY (case_id),
FOREIGN KEY (depart_id) REFERENCES department(dep_id),
FOREIGN KEY (act_id) REFERENCES active_info(active_id)
);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('WolfyEK','wolfy', 'wolfs', 'B05-141', 12);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('LizzyLB','blin', 'fox', 'B02-151', 4);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('NikitaNP','Persostrat@', 'dogs', 'B05-241', 7);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('SophiSM','FPMI@.b.raq1', 'fox', 'M05-941', 10);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('ArtemAA','Zhuk@', 'music', 'B03-013', 13);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('ArtemAK', 'ex-predsed!mail.ru','tsardom', 'M05-141', 3);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('AlexSI','predsed@re', 'KMO', 'B05-141', 12);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('AlexSI','predsed@re', 'KMO', 'B05-141', 1);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('AlexSI','predsed@re', 'KMO', 'B05-141', 2);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('KostyaKK','pravo@.re', 'Законы', 'Академ', 0);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('AliceAB','fhysic', 'психология', 'B02-013', 0);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('TimurTS','fact@mail.ru', 'самолеты', 'B03-003', 3);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('TimurTS','fact@mail.ru', 'самолеты', 'B03-003', 12);
INSERT INTO active_info (fio,mail,interests,groups,dorm)
VALUES ('TimurTS','fact@mail.ru', 'самолеты', 'B03-003', 5);
INSERT INTO department (dep_name, boss_id, descr)
VALUES ('Правовой', 8, 'Работа с документами');
INSERT INTO department (dep_name, boss_id, descr)
VALUES ('КМО', 3, 'Организация мероприятий');
INSERT INTO department (dep_name, boss_id, descr)
VALUES ('Психология', 9, 'Психологическая поддержка');
INSERT INTO department (dep_name, boss_id, descr)
VALUES ('Промо', 1, 'Сотрудничество');
INSERT INTO department (dep_name, boss_id, descr)
VALUES ('ПрофоргиФАКТ', 10, 'Профорги');
INSERT INTO department (dep_name, boss_id, descr)
VALUES ('Мероприятия', 4, 'Творчество');
INSERT INTO active_profkom (id, department_id)
VALUES (1, 4);
INSERT INTO active_mki (id, department_id)
VALUES (2, 3);
INSERT INTO active_profkom (id, department_id)
VALUES (3, 2);
INSERT INTO active_profkom (id, department_id)
VALUES (4, 1);
INSERT INTO active_profkom (id, department_id)
VALUES (5, 2);
INSERT INTO active_profkom (id, department_id)
VALUES (6, 1);
INSERT INTO active_profkom (id, department_id)
VALUES (7, 2);
INSERT INTO active_profkom (id, department_id)
VALUES (8, 1);
INSERT INTO active_mki (id, department_id)
VALUES (9, 3);
INSERT INTO active_231 (id, department_id)
VALUES (10, 5);
INSERT INTO cases (depart_id, act_id, case_date, problem)
VALUES (1, 8, '21.04', 'перевод между групп');
INSERT INTO cases (depart_id, act_id, case_date, problem)
VALUES (2, 2, '18.04-25.05', 'батуты');
INSERT INTO cases (depart_id, act_id, case_date, problem)
VALUES (5, 4, '1.02', 'МП');
INSERT INTO cases (depart_id, act_id, case_date, problem)
VALUES (4, 1, '24.08', 'соглашение');
UPDATE active_info
SET groups = REPLACE(groups, 'B', 'Б');
DELETE FROM active_mki
WHERE department_id = 6;
SELECT * FROM active_info;
SELECT * FROM department;
SELECT id, department_id, fio, mail FROM active_profkom
LEFT OUTER JOIN active_info
ON active_profkom.id = active_info.active_id;
SELECT * FROM active_mki;
SELECT * FROM active_231;
SELECT * FROM active_other;
SELECT * FROM cases;
SELECT dorm, fio, mail FROM active_info GROUP BY dorm, fio, mail
HAVING (mail NOT LIKE '%[^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$]%');
SELECT fio, dorm, groups FROM active_info ORDER BY dorm;
SELECT DISTINCT fio, max(dorm) OVER(PARTITION BY fio) FROM active_info;
SELECT fio, groups, last_value(dorm) OVER(ORDER BY groups) FROM active_info;
SELECT fio, mail, groups, max(dorm) OVER(PARTITION BY dorm ORDER BY fio) FROM active_info;