-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy path9_interview.sql
More file actions
146 lines (119 loc) · 2.69 KB
/
9_interview.sql
File metadata and controls
146 lines (119 loc) · 2.69 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
SELECT * FROM salaries LIMIT 20;
/* ЗАДАЧА 1
Вивести всіх спеціалістів, в яких з/п вище середньої в таблиці
*/
SELECT *
FROM salaries
WHERE
salary_in_usd > -- порівняння з avg_salary
(
SELECT AVG(salary_in_usd)
FROM salaries
WHERE year = 2023
)
AND year = 2023;
/* ЗАДАЧА 2
Вивести всіх спеціалістів, які живуть в країнах, де середня з/п вища за середню серед усіх країн.
*/
--1. Пошук середньої з/п
--2. По кожній країні - середня з/п
--3. Порівнюємо, виводимо передік країн
--4. Спеціалісти, що проживають в цих країнах
------------------
-- 1
SELECT AVG(salary_in_usd)
FROM salaries
-- 2,3
SELECT
company_location
FROM salaries
WHERE year = 2023
GROUP BY 1
HAVING AVG(salary_in_usd) >
(
SELECT AVG(salary_in_usd)
FROM salaries
WHERE year = 2023
)
-- 4
SELECT *
FROM salaries
WHERE emp_location IN
(
SELECT
company_location
FROM salaries
WHERE year = 2023
GROUP BY 1
HAVING AVG(salary_in_usd) >
(
SELECT AVG(salary_in_usd)
FROM salaries
WHERE year = 2023
)
)
/* ЗАДАЧА 3
Знайти мінімальну заробітну плату серед максимальних з/п по країнах
*/
-- 1. максимальних з/п по країнах в 2023 році
-- 2. Знайти мінімальну з/п
-------------
--1.
SELECT
company_location
, MAX(salary_in_usd)
FROM salaries
GROUP BY 1
--2.
SELECT MIN(t.salary_in_usd)
FROM
(
SELECT
company_location
, MAX(salary_in_usd) AS salary_in_usd
FROM salaries
GROUP BY 1
) AS t
-- альтернатива
SELECT
company_location
, MAX(salary_in_usd) AS salary_in_usd
FROM salaries
GROUP BY 1
ORDER BY 2 ASC
LIMIT 1
/* ЗАДАЧА 4
По кожній професії вивести різницю між середньою з/п та максимальною з/п усіх спеціалістів
*/
--1. Максимальна з/п
--2. Таблиця професій і середніх з/п
--3. Результат
SELECT MAX(salary_in_usd)
FROM salaries
SELECT
job_title
, AVG(salary_in_usd) -
(
SELECT MAX(salary_in_usd)
FROM salaries
) AS diff
FROM salaries
GROUP BY 1
/* ЗАДАЧА 5
Вивести дані по співробітнику, який отримує другу по розміру з/п в таблиці
*/
SELECT *
FROM
(
SELECT *
FROM salaries
ORDER BY salary_in_usd DESC
LIMIT 2
) AS t
ORDER BY salary_in_usd ASC
LIMIT 1
-- альтернатива
SELECT *
FROM salaries
ORDER BY salary_in_usd DESC
LIMIT 1 OFFSET 1