-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathlab2.sql
244 lines (163 loc) · 4.85 KB
/
lab2.sql
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
Exercițiul 1
SELECT CONCAT(first_name, CONCAT(' ', last_name))
|| ' castiga ' || salary
|| ' lunar dar doreste ' || (3 * salary) "Salariu ideal"
FROM employees;
Exercițiul 2
SELECT INITCAP(first_name) Prenume, UPPER(last_name) Nume, LENGTH(last_name) "Lungime nume"
FROM employees
WHERE
first_name LIKE 'J%' OR first_name LIKE 'M%'
OR SUBSTR(first_name, 2, 1) = 'a'
ORDER BY "Lungime nume" DESC;
Exercițiul 3
SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(first_name) LIKE '%steven%';
Exercițiul 4
SELECT employee_id, last_name, LENGTH(last_name) "Lungime nume",
INSTR(LOWER(last_name), 'a') "Prima poziție a lui 'a'"
FROM employees
WHERE last_name NOT LIKE '%e';
Exercițiul 5
SELECT first_name, last_name
FROM employees
WHERE
MOD(TRUNC(SYSDATE - hire_date), 7) = 0;
Exercițiul 6
SELECT employee_id, last_name, salary,
ROUND(salary * 1.15, 2) "Salariu nou",
MOD(FLOOR(ROUND(salary * 1.15, 2) / 100), 10) "Numar sute"
FROM employees
WHERE MOD(salary, 1000) != 0;
Exercițiul 7
SELECT first_name || ' ' || last_name "Nume angajat",
RPAD(TO_CHAR(hire_date, 'DD/MM/YYYY'), 14) "Data angajarii"
FROM employees
WHERE commission_pct != 0;
Exercițiul 8
SELECT SYSDATE + 30 "Peste 30 de zile"
FROM dual;
Exercițiul 9
SELECT ROUND(LAST_DAY('01-DEC-2020') - SYSDATE) "Numar zile"
FROM dual;
Exercițiul 10
SELECT TO_CHAR(SYSDATE, 'HH24:MI DD/MM/YYYY')
FROM dual;
SELECT TO_CHAR((SYSDATE + 0.5), 'HH24:MI DD/MM/YYYY') "Peste 12 ore"
FROM dual;
SELECT TO_CHAR(SYSDATE + 5 * (1/(24 * 60)), 'HH24:MI DD/MM/YYYY') "Peste 5 minute"
FROM dual;
Exercițiul 11
SELECT last_name || ' ' || first_name "Nume",
hire_date "Data angajari",
NEXT_DAY(ADD_MONTHS(hire_date, 6), 'Monday') "Zi negociere salariu"
FROM employees;
Exercițiul 12
SELECT last_name, ROUND(MONTHS_BETWEEN(SYSDATE, hire_date)) "Luni lucrate"
FROM employees
ORDER BY "Luni lucrate";
Exercițiul 13
SELECT last_name, hire_date, TO_CHAR(hire_date, 'DAY') "Zi"
FROM employees
ORDER BY TO_CHAR(hire_date, 'D');
Exercițiul 14
SELECT first_name || ' ' || last_name "Nume",
NVL(TO_CHAR(commission_pct), 'Fara comision') "Comision"
FROM employees;
Exercițiul 15
SELECT last_name, salary, commission_pct
FROM employees
WHERE salary * (1 + NVL(commission_pct, 0)) >= 10000;
Exercițiul 16
SELECT first_name || ' ' || last_name "Nume", job_id, salary,
salary * (1 + DECODE(job_id,
'IT_PROG', 0.2,
'SA_REP', 0.25,
'SA_MAN', 0.35,
0)) "Salariu renegociat"
FROM employees;
Exercițiul 17
SELECT first_name, t2.department_id, t2.department_name
FROM employees t1
INNER JOIN departments t2
ON t1.department_id = t2.department_id;
Exercițiul 18
SELECT DISTINCT(job_id)
FROM employees t1
INNER JOIN departments t2
ON t1.department_id = t2.department_id
WHERE t1.department_id = 30;
Exercițiul 19
SELECT first_name, last_name, department_name, location_id
FROM employees t1
INNER JOIN departments t2
ON t1.department_id = t2.department_id
WHERE commission_pct IS NOT NULL;
Exercițiul 20
SELECT last_name, department_name
FROM employees t1
INNER JOIN departments t2
ON t1.department_id = t2.department_id
WHERE LOWER(last_name) LIKE '%a%';
Exercițiul 21
SELECT last_name, job_id, t2.department_id, t2.department_name
FROM employees t1
INNER JOIN departments t2
ON t1.department_id = t2.department_id
WHERE t2.location_id = (
SELECT location_id
FROM locations
WHERE city LIKE '%Oxford%'
);
Exercițiul 22
SELECT
t1.employee_id Ang#,
t1.first_name || ' ' || t1.last_name Angajat,
t2.employee_id Mgr#,
t2.first_name || ' ' || t2.last_name Manager
FROM employees t1
INNER JOIN employees t2
ON t1.manager_id = t2.employee_id;
Exercițiul 23
SELECT
t1.employee_id Ang#,
t1.first_name || ' ' || t1.last_name Angajat,
t2.employee_id Mgr#,
t2.first_name || ' ' || t2.last_name Manager
FROM employees t1
LEFT OUTER JOIN employees t2
ON t1.manager_id = t2.employee_id;
Exercițiul 24
SELECT t1.last_name "Nume angajat", t1.department_id Departament, t2.last_name "Nume coleg"
FROM employees t1
JOIN employees t2
ON (t1.department_id = t2.department_id)
AND (t1.employee_id <> t2.employee_id);
Exercițiul 25
SELECT t1.first_name || ' ' || t1.last_name name,
t2.job_id,
t2.job_title,
t1.department_id,
t1.salary
FROM employees t1
INNER JOIN jobs t2
ON t1.job_id = t2.job_id;
Exercițiul 26
SELECT first_name || ' ' || last_name name, hire_date
FROM employees
WHERE hire_date > (
SELECT hire_date
FROM employees
WHERE last_name = 'Gates'
);
Exercițiul 27
SELECT
t1.first_name || ' ' || t2.last_name Angajat,
t1.hire_date Data_ang,
t2.first_name || ' ' || t2.last_name Manager,
t2.hire_date Data_mgr
FROM employees t1
INNER JOIN employees t2
ON t1.manager_id = t2.employee_id
WHERE t1.hire_date < t2.hire_date;