﻿ SQL: List the result in the ascending order of experience

SQL Exercise: List the result in the ascending order of experience

SQL subqueries on employee Database: Exercise-15 with Solution

[An editor is available at the bottom of the page to write and execute the scripts.]

15. From the following tables, write a SQL query to find those employees of grade 3 and 4 and work in the department of FINANCE or AUDIT and whose salary is more than the salary of ADELYN and experience is more than FRANK. Return complete information about the employees.

Sample table: employees

Sample table: department

Sample Solution:

``````SELECT *
FROM employees e
WHERE e.dep_id IN
(SELECT d.dep_id
FROM department d
WHERE d.dep_name IN ('FINANCE',
'AUDIT') )
AND e.salary >
(SELECT salary
FROM employees
AND e.hire_date <
(SELECT hire_date
FROM employees
WHERE emp_name = 'FRANK')
AND e.emp_id IN
(SELECT e.emp_id
FROM employees e,
WHERE e.salary BETWEEN s.min_sal AND s.max_sal
4) )
ORDER BY e.hire_date ASC;
``````

Sample Output:

``` emp_id | emp_name | job_name | manager_id | hire_date  | salary  | commission | dep_id
--------+----------+----------+------------+------------+---------+------------+--------
65646 | JONAS    | MANAGER  |      68319 | 1991-04-02 | 2957.00 |            |   2001
67832	| CLARE	   | MANAGER  |      68319 | 1991-06-09 | 2550.00 |            |   1001
(2 rows)
```

Explanation:

The given query in SQL that selects all employees who work in the "FINANCE" or "AUDIT" departments, have a salary greater than the employee named "ADELYN", were hired before the employee named "FRANK", and have a salary grade of 3 or 4 from the "employees" table. The results are ordered by hire date in ascending order.

The first condition in the WHERE clause filters only employees who work in departments with names of "FINANCE" or "AUDIT" obtained from a subquery. The subquery that selects the "dep_id" of departments with these names.

The second condition in the WHERE clause filters only employees with a salary greater than the salary of the employee named "ADELYN" obtained from a subquery. The subquery that selects the salary of the employee named "ADELYN".

The third condition in the WHERE clause filters only employees who were hired before the employee named "FRANK" obtained from a subquery. The subquery that selects the hire date of the employee named "FRANK".

The fourth condition in the WHERE clause filters only employees with a salary grade of 3 or 4 obtained from a subquery. The subquery that joins the 'employees' and 'salary_grade' tables and selects employees whose salary falls within the range defined by the "min_sal" and "max_sal" columns of the "salary_grade" table and whose salary grade is either 3 or 4.

Practice Online

Structure of employee Database

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

Previous SQL Exercise: Employees, senior to BLAZE and work at PERTH, BRISBANE.
Next SQL Exercise: Employees with common designation as SANDRINE or ADELYN.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.

﻿