Advertisement
YavorGrancharov

Subqueries and JOINs - Exercise

Oct 21st, 2017
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 3.87 KB | None | 0 0
  1. 01. Employee Address
  2. SELECT e.employee_id,e.job_title,e.address_id,a.address_text FROM employees AS e
  3. LEFT JOIN addresses AS a ON e.address_id=a.address_id ORDER BY e.address_id ASC
  4. LIMIT 5;
  5. ----------
  6. 02. Addresses with Towns
  7. SELECT e.first_name,e.last_name,t.name AS `town`,a.address_text FROM employees AS e
  8. LEFT JOIN addresses AS a ON e.address_id=a.address_id RIGHT JOIN towns AS t
  9. ON a.town_id=t.town_id ORDER BY first_name ASC,last_name ASC LIMIT 5;
  10. -------------
  11. 03. Sales Employee
  12. SELECT e.employee_id,e.first_name,e.last_name,d.name AS `department_name`
  13. FROM employees AS e LEFT JOIN departments AS d ON d.department_id=e.department_id
  14. WHERE d.name='Sales' ORDER BY e.employee_id DESC;
  15. --------------
  16. 04. Employee Departments
  17. SELECT e.employee_id,e.first_name,e.salary,d.name AS `department_name`
  18. FROM employees AS e LEFT JOIN departments AS d ON d.department_id=e.department_id
  19. WHERE e.salary > 15000 ORDER BY d.department_id DESC LIMIT 5;
  20. -------------
  21. 05. Employees Without Project
  22. SELECT e.employee_id,e.first_name FROM employees AS e
  23. LEFT JOIN employees_projects AS ep ON ep.employee_id=e.employee_id
  24. WHERE ep.employee_id IS NULL ORDER BY e.employee_id DESC LIMIT 3;
  25. ------------
  26. 06. Employees Hired After
  27. SELECT first_name,last_name,hire_date,name AS `dept_name`
  28. FROM employees AS e LEFT JOIN departments AS d ON d.department_id=e.department_id
  29. WHERE DATE(e.hire_date) > '1999-01-01' AND d.name IN ('Sales','Finance')
  30. ORDER BY e.hire_date ASC;
  31. ---------------
  32. 07. Employees with Project
  33. SELECT e.employee_id,e.first_name,p.name AS `project_name` FROM employees AS e
  34. LEFT JOIN employees_projects AS ep ON ep.employee_id=e.employee_id
  35. RIGHT JOIN projects AS p ON ep.project_id=p.project_id WHERE DATE(p.start_date)
  36. > '2002-08-13' AND DATE(p.end_date) IS NULL ORDER BY e.first_name ASC,
  37. p.name ASC LIMIT 5;
  38. ---------------
  39. 08. Employee 24
  40. SELECT e.employee_id,e.first_name,
  41. CASE
  42.     WHEN YEAR(p.start_date) >= '2005'
  43.     THEN p.name = NULL
  44.     ELSE p.name
  45.     END
  46. AS `project_name` FROM employees AS e
  47. LEFT JOIN employees_projects AS ep ON ep.employee_id=e.employee_id
  48. LEFT JOIN projects AS p ON ep.project_id=p.project_id
  49. WHERE e.employee_id=24
  50. ORDER BY `project_name` ASC;
  51. --------------
  52. 09. Employee Manager
  53. SELECT e.employee_id,e.first_name,e.manager_id,e2.first_name AS `manager_name`
  54. FROM employees AS e JOIN employees AS e2 ON e.manager_id=e2.employee_id
  55. WHERE e.manager_id IN (3,7) ORDER BY e.first_name ASC;
  56. -------------
  57. 10. Employee Summary
  58. SELECT e.employee_id,CONCAT(e.first_name,' ',e.last_name) AS `employee_name`,
  59. CONCAT(e2.first_name,' ',e2.last_name) AS `manager_name`,d.name AS `department_name`
  60. FROM employees AS e JOIN employees AS e2 ON e.manager_id=e2.employee_id
  61. JOIN departments AS d ON d.department_id=e.department_id ORDER BY e.employee_id ASC
  62. LIMIT 5;
  63. ---------------
  64. 11. Min Average Salary
  65. SELECT AVG(e.salary) AS `min_average_salary` FROM employees AS e
  66. GROUP BY e.department_id ORDER BY AVG(e.salary) LIMIT 1;
  67. ------------
  68. 12. Highest Peaks in Bulgaria
  69. SELECT c.country_code,m.mountain_range,peak_name,elevation FROM peaks AS p
  70. LEFT JOIN mountains AS m ON p.mountain_id=m.id RIGHT JOIN mountains_countries
  71. AS mc ON m.id=mc.mountain_id RIGHT JOIN countries AS c ON
  72. c.country_code=mc.country_code WHERE c.country_name='Bulgaria' AND
  73. p.elevation > 2835 ORDER BY p.elevation DESC;
  74. -------------
  75. 13. Count Mountain Ranges
  76. SELECT mc.country_code,COUNT(m.id) AS `mountain_range`
  77. FROM mountains_countries AS mc
  78. JOIN mountains AS m ON m.id=mc.mountain_id
  79. WHERE mc.country_code IN ('BG','US','RU')
  80. GROUP BY mc.country_code
  81. HAVING mountain_range > 0
  82. ORDER BY mountain_range DESC;
  83. -----------
  84. 14. Countries with Rivers
  85. SELECT country_name,river_name FROM rivers AS r
  86. RIGHT JOIN countries_rivers AS cr ON r.id=cr.river_id
  87. RIGHT JOIN countries AS c ON c.country_code=cr.country_code
  88. WHERE c.continent_code='AF' ORDER BY c.country_name ASC LIMIT 5;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement