w3resource

SQL Exercise: Display department, grade, and number of SALESMEN

SQL employee Database: Exercise-100 with Solution

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

100. From the following table, write a SQL query to identify departments with at least two SALESMEN in each grade. Return department name, grade and number of employees.

Sample table: employees


Sample table: department


Sample table: salary_grade


Sample Solution:

SELECT d.dep_name,
       s.grade,
       count(*)
FROM employees e,
     department d,
     salary_grade s
WHERE e.dep_id = d.dep_id
  AND e.job_name = 'SALESMAN'
  AND e.salary BETWEEN s.min_sal AND s.max_sal
GROUP BY d.dep_name,
         s.grade
HAVING count(*) >= 2;

Sample Output:

 dep_name  | grade | count
-----------+-------+-------
 MARKETING |     2 |     2
 MARKETING |     3 |     2
(2 rows)

Explanation:

The given query in SQL that retrieves information about the number of salesmen in each department and their corresponding salary grade, but only for departments where there are at least two salesmen from the 'employees', 'department', and 'salary_grade' tables.

The query performed a joins between the 'employees', 'department', and 'salary_grade' tables based on the employee's department ID, job name, and salary range.

The "WHERE" clause filters the results to include only those employees with the job name of "SALESMAN" and whose salary falls within the salary range of their corresponding salary grade.

The "GROUP BY" clause groups the results by department name and salary grade, so the query returns one row for each department and salary grade combination with the count of salesmen in that group.

The "HAVING" clause filters the results to only include groups with a count of two or more salesmen, so the query will only return departments where there are multiple salesmen in the same salary grade.

Relational Algebra Expression:

Relational Algebra Expression: Display the department name, grade, no. of employees where at least two employees are working as a SALESMAN.

Relational Algebra Tree:

Relational Algebra Tree: Display the department name, grade, no. of employees where at least two employees are working as a SALESMAN.

Practice Online


Sample Database: employee

employee database structure

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

Previous SQL Exercise: Grade, number of employees, and salary for each grade.
Next SQL Exercise: List the number of employees in each department.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.