1
+ -- 1. Employee Address
2
+
3
+ SELECT e .employee_id ,e .job_title ,a .address_id ,a .address_text
4
+ FROM employees AS e
5
+ JOIN addresses AS a ON e .address_id = a .address_id
6
+ ORDER BY a .address_id
7
+ LIMIT 5 ;
8
+
9
+ -- 2. Addresses with Towns
10
+ SELECT e .first_name ,e .last_name ,t .name ,a .address_text
11
+ FROM employees AS e
12
+ JOIN addresses AS a
13
+ JOIN towns t ON e .address_id = a .address_id
14
+ AND a .town_id = t .town_id
15
+ ORDER BY e .first_name ,e .last_name
16
+ LIMIT 5 ;
17
+
18
+ -- 3. Sales Employee
19
+ SELECT e .employee_id ,e .first_name ,e .last_name ,d .name
20
+ FROM employees AS e
21
+ JOIN departments AS d ON e .department_id = d .department_id
22
+ WHERE d .name = ' Sales'
23
+ ORDER BY e .employee_id DESC ;
24
+
25
+ -- 4. Employee Departments
26
+ SELECT e .employee_id ,e .first_name ,e .salary ,d .name
27
+ FROM employees AS e
28
+ JOIN departments AS d ON e .department_id = d .department_id
29
+ WHERE e .salary > 15000
30
+ ORDER BY d .department_id DESC
31
+ LIMIT 5 ;
32
+
33
+ -- 5. Employees Without Project
34
+ SELECT e .employee_id ,e .first_name
35
+ FROM employees AS e
36
+ LEFT JOIN employees_projects AS ep ON e .employee_id = ep .employee_id
37
+ WHERE ep .project_id IS NULL
38
+ ORDER BY e .employee_id DESC
39
+ LIMIT 3 ;
40
+
41
+ -- 6. Employees Hired After
42
+ SELECT e .first_name ,e .last_name ,e .hire_date ,d .name AS dept_name
43
+ FROM employees AS e
44
+ JOIN departments AS d ON e .department_id = d .department_id
45
+ WHERE d .name IN (' Sales' ,' Finance' )
46
+ AND DATE (e .hire_date ) > ' 1999/1/1'
47
+ ORDER BY e .hire_date ;
48
+
49
+ -- 7. Employees with Project
50
+ SELECT e .employee_id ,e .first_name ,p .name
51
+ FROM employees AS e
52
+ JOIN employees_projects AS ep ON e .employee_id = ep .employee_id
53
+ JOIN projects AS p ON ep .project_id = p .project_id
54
+ WHERE DATE (p .start_date ) > (' 2002-08-13' )
55
+ AND ISNULL(p .end_date )
56
+ ORDER BY e .first_name ,p .name
57
+ LIMIT 5 ;
58
+
59
+ -- 8. Employee 24
60
+ SELECT e .employee_id ,e .first_name ,IF(YEAR(p .start_date ) >= 2005 ,NULL ,p .name )
61
+ FROM employees AS e
62
+ JOIN employees_projects AS ep ON e .employee_id = ep .employee_id
63
+ JOIN projects AS p ON ep .project_id = p .project_id
64
+ WHERE ep .employee_id = 24
65
+ ORDER BY p .name ;
66
+
67
+ -- 9. Employee Manager
68
+ SELECT e .employee_id ,e .first_name ,e .manager_id ,m .first_name
69
+ FROM employees AS e
70
+ JOIN employees AS m ON e .manager_id = m .employee_id
71
+ WHERE e .manager_id IN (3 ,7 )
72
+ ORDER BY e .first_name ;
73
+
74
+
75
+ -- 10. Employee Summary
76
+ SELECT e .employee_id ,
77
+ CONCAT(e .first_name ,' ' ,e .last_name ) AS ' employee_name' ,
78
+ CONCAT(m .first_name ,' ' ,m .last_name ) AS ' manager_name' ,
79
+ d .name AS department_name
80
+ FROM employees AS e
81
+ JOIN employees AS m ON m .employee_id = e .manager_id
82
+ JOIN departments AS d ON e .department_id = d .department_id
83
+ ORDER BY e .employee_id
84
+ LIMIT 5 ;
85
+
86
+ -- 11. Min Average Salary
87
+
88
+ SELECT MIN (min_avg_salary) AS ' min_average_salary'
89
+ FROM
90
+ (
91
+ SELECT AVG (salary) AS min_avg_salary
92
+ FROM employees
93
+ GROUP BY department_id
94
+ ) AS min_salaries;
95
+
96
+ USE geography;
97
+
98
+ -- 12. Highest Peaks in Bulgaria
99
+ SELECT mk .country_code ,m .mountain_range ,p .peak_name ,p .elevation
100
+ FROM mountains_countries AS mk
101
+ JOIN mountains AS m ON mk .mountain_id = m .id
102
+ JOIN peaks AS p ON m .id = p .mountain_id
103
+ WHERE mk .country_code = ' BG' AND p .elevation > 2835
104
+ ORDER BY p .elevation DESC ;
105
+
106
+ -- 13. Count Mountain Ranges
107
+ SELECT c .country_code ,COUNT (m .mountain_range ) AS mountain_range
108
+ FROM countries AS c
109
+ JOIN mountains_countries AS mc ON c .country_code = mc .country_code
110
+ JOIN mountains AS m ON mc .mountain_id = m .id
111
+ WHERE c .country_code IN (' US' , ' BG' , ' RU' )
112
+ GROUP BY c .country_code
113
+ ORDER BY mountain_range DESC ;
114
+
115
+ -- 14. Countries with Rivers
116
+
117
+ SELECT c .country_name ,r .river_name
118
+ FROM rivers AS r
119
+ RIGHT JOIN countries_rivers AS cr
120
+ ON r .id = cr .river_id
121
+ RIGHT JOIN countries AS c
122
+ ON cr .country_code = c .country_code
123
+ WHERE continent_code = ' AF'
124
+ ORDER BY country_name ASC
125
+ LIMIT 5 ;
126
+
127
+ -- 16. Countries without any Mountains
128
+
129
+ SELECT (COUNT (* ) - COUNT (mc .mountain_id )) AS country_count
130
+ FROM countries AS c
131
+ LEFT JOIN mountains_countries As mc
132
+ ON c .country_code = mc .country_code ;
133
+
134
+ -- 17. Highest Peak and Longest River by Country
135
+
136
+ SELECT c .country_name , MAX (p .elevation ) AS highest_peak_elevation, MAX (r .length ) AS longest_river_length
137
+ FROM countries AS c
138
+ LEFT JOIN mountains_countries as mc ON c .country_code = mc .country_code
139
+ LEFT JOIN peaks AS p ON mc .mountain_id = p .mountain_id
140
+ LEFT JOIN countries_rivers AS cr ON cr .country_code = c .country_code
141
+ LEFT JOIN rivers as r ON r .id = cr .river_id
142
+ GROUP BY c .country_name
143
+ ORDER BY highest_peak_elevation DESC , longest_river_length DESC , c .country_name
144
+ LIMIT 5 ;
0 commit comments