-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy path7_WHERE.sql
More file actions
212 lines (182 loc) · 5.02 KB
/
7_WHERE.sql
File metadata and controls
212 lines (182 loc) · 5.02 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
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
SELECT * FROM salaries LIMIT 20;
# Фільтр числових колонок -----------------------
SELECT *
FROM salaries
WHERE
year != 2023
LIMIT 20;
# Фільтр текстових колонок -----------------------
SELECT year
FROM salaries
WHERE
exp_level = 'MI'
LIMIT 20;
# Поєднання фільтрів умовними операторами --------
SELECT *
FROM salaries
WHERE
exp_level = 'MI'
AND (exp_level != 'MI'
OR exp_level != 'MI')
LIMIT 20;
# Вказання діапазону значень ---------------------
SELECT DISTINCT year
FROM salaries
WHERE 1=1
AND year NOT BETWEEN 2021 AND 2023
-- AND year >= 2020
-- AND year <= 2023
LIMIT 20;
# Вказання Списку числових значень ---------------
SELECT DISTINCT year
FROM salaries
WHERE 1=1
AND year NOT IN (2020,2021)
-- AND year >= 2020
-- AND year <= 2023
LIMIT 20;
# Вказання Списку текстових значень --------------
SELECT DISTINCT job_title
FROM salaries
WHERE 1=1
AND job_title IN ('Data Analyst', 'Data Scientist')
-- AND year >= 2020
-- AND year <= 2023
LIMIT 20;
# Пошук тексту за шаблоном -----------------------
SELECT DISTINCT job_title
FROM salaries
WHERE 1=1
AND job_title iLIKE ('data_A%')
-- AND year >= 2020
-- AND year <= 2023
LIMIT 20;
# Фільтр пустих значень --------------------------
SELECT *
FROM salaries
WHERE 1=1
AND year IS NOT NULL
-- AND job_title iLIKE ('data_A%')
LIMIT 20;
# Приклади рішень для вправ: ----------------------
/*
1. Вивести всіх співробітників,
які в 2023 отримували з/п більшу за $300тис.
*/
SELECT *
FROM salaries
WHERE 1=1
AND year = 2023
AND salary_in_usd >= 300000
;
/*
2. Вивести всіх співробітників,
які в 2023 отримували з/п більшу за $300тис.
та не працювали в великих компаніях
*/
SELECT *
FROM salaries
WHERE 1=1
AND year = 2023
AND salary_in_usd >= 300000
AND company_size != 'L'
;
/*
3. Чи є співробітники, які
працювали на Українську компанію
повністю віддалено?
*/
SELECT *
FROM salaries
WHERE 1=1
AND remote_ratio = 100
AND company_location = 'UA'
;
/*
4. Вивести всіх співробітників,
які в 2023 році
працюючи в Німеччині (company_location = 'DE')
отримували з/п більшу за $100тис.
*/
SELECT *
FROM salaries
WHERE 1=1
AND year = 2023
AND salary_in_usd >= 100000
AND company_location = 'DE'
;
/*
5. Доопрацювати попередній запит:
Вивести тільки ТОП 5 співробітників
за рівнем з/п з попередньої таблиці
*/
SELECT *
FROM salaries
WHERE 1=1
AND year = 2023
AND salary_in_usd >= 100000
AND company_location = 'DE'
ORDER BY salary_in_usd DESC
LIMIT 5;
/*
6. Додати в попередню таблицю окрім
спеціалістів з Німеччини спеціалістів з Канади (CA).
*/
SELECT *
FROM salaries
WHERE 1=1
AND year = 2023
AND salary_in_usd >= 100000
AND (company_location = 'DE'
OR company_location = 'CA')
ORDER BY salary_in_usd DESC
LIMIT 5;
/*
7. Надати перелік країн, в яких
в 2021 році
спеціалісти "ML Engineer" та "Data Scientist"
отримувати з/п в діапазоні між $50тис і $100тис
*/
SELECT DISTINCT company_location
FROM salaries
WHERE 1=1
AND year = 2021
AND (job_title = 'ML Engineer'
OR job_title = 'Data Scientist')
AND salary_in_usd BETWEEN 50000 AND 100000
;
/*
8. Порахувати кількість спеціалістів,
які працюючи в середніх компаніях
(company_size = M)
та в великих компаніях
(company_size = L)
працювали віддалено
(remote_ratio=100 або remote_ratio=50).
Є багато різних варіантів прописання таких фільтрів,
доречно експерементувати.
*/
SELECT COUNT(year)
FROM salaries
WHERE 1=1
AND company_size IN ('M', 'L')
AND remote_ratio NOT IN (0)
;
/*
9. Вивести кількість країн, які починаються на "С"
*/
SELECT COUNT(DISTINCT company_location)
FROM salaries
WHERE company_location LIKE 'C%';
/*
10. Вивести професії, назви яких
не складаються з трьох слів
*/
SELECT DISTINCT job_title
FROM salaries
WHERE job_title NOT LIKE '% % %' -- цей запит не поверне професії, які складаються з 4х слів
-- Варіант вирішення з врахуванням 4х слів і більше:
SELECT DISTINCT job_title
FROM salaries
WHERE LENGTH (job_title) - LENGTH(REPLACE(job_title,' ','')) != 2 -- всі професії, в назвах яких НЕ 2 знаки пробілу
GROUP BY 1;