w3resource

PostgreSQL JOINS: Make a join with two tables employees and departments for all the managers who achieved a working experience is more than 15 years


13. Write a query to make a join with two tables employees and departments to display department name, first_name and last_name, hire date and salary for all the managers who achieved a working experience is more than 15 years.

Sample Solution:

Code:

-- This SQL query retrieves department name, employee details, and years of experience for employees whose experience is greater than 15 years.

SELECT department_name, -- Selects the department_name column from the departments table
       first_name, -- Selects the first_name column from the employees table
       last_name, -- Selects the last_name column from the employees table
       hire_date, -- Selects the hire_date column from the employees table
salary, -- Selects the salary column from the employees table
       date_part('year', age(now(), hire_date)) Experience -- Calculates the years of experience for each employee and labels it as "Experience"
FROM departments w1 -- Specifies the first table from which to retrieve data, aliasing it as 'w1'
JOIN employees w2 -- Joins the departments table with the employees table, specifying the second table and aliasing it as 'w2'
ON (w1.manager_id = w2.employee_id) -- Specifies the join condition based on the manager_id and employee_id columns
WHERE date_part('year', age(now(), hire_date)) > 15; -- Filters the rows to include only those where the years of experience are greater than 15

Explanation:

  • This SQL query retrieves department name, employee details, and years of experience for employees whose experience is greater than 15 years.
  • The SELECT statement selects department name, employee first name, last name, hire date, salary, and calculates the years of experience for each employee.
  • The FROM clause specifies the first table from which to retrieve data, which is the departments table, aliasing it as 'w1'.
  • A JOIN operation is performed with the employees table, specifying the second table and aliasing it as 'w2'.
  • The ON clause specifies the join condition where the manager_id from the departments table matches the employee_id from the employees table.
  • The WHERE clause filters the rows to include only those where the years of experience are greater than 15, calculated using the age() function.

Sample table: employees


Sample table: departments


Output:

pg_exercises-# SELECT department_name, first_name, last_name,
pg_exercises-# hire_date, salary,date_part('year',age(now(),hire_date)) Experience 
pg_exercises-# FROM departments w1
pg_exercises-# JOIN employees w2
pg_exercises-# ON (w1.manager_id = w2.employee_id)
pg_exercises-# WHERE date_part('year',age(now(),hire_date))>15;
 department_name  | first_name | last_name | hire_date  |  salary  | experience
------------------+------------+-----------+------------+----------+------------
 Administration   | Jennifer   | Whalen    | 1987-09-25 |  4400.00 |         29
 Marketing        | Michael    | Hartstein | 1987-09-26 | 13000.00 |         29
 Purchasing       | Den        | Raphaely  | 1987-07-01 | 11000.00 |         29
 Human Resources  | Susan      | Mavris    | 1987-09-28 |  6500.00 |         29
 Shipping         | Adam       | Fripp     | 1987-07-08 |  8200.00 |         29
 IT               | Alexander  | Hunold    | 1987-06-20 |  9000.00 |         29
 Public Relations | Hermann    | Baer      | 1987-09-29 | 10000.00 |         29
 Sales            | John       | Russell   | 1987-08-01 | 14000.00 |         29
 Executive        | Steven     | King      | 1987-06-17 | 24000.00 |         29
 Finance          | Nancy      | Greenberg | 1987-06-25 | 12000.00 |         29
 Accounting       | Shelley    | Higgins   | 1987-09-30 | 12000.00 |         29
(11 rows)

Practice Online


Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a query to make a join with two tables employees and jobs to display the job title, employee name, and the difference between salary and the minimum salary of the employees.
Next: PostgreSQL Subquery - Exercises, Practice, Solution

What is the difficulty level of this exercise?



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/postgresql-exercises/join/postgresql-join-exercise-13.php