Recent Hires
Description
Your company has many different departments. Information about the employees working in these departments is stored in the pr_department, it_department, and sales_department tables, which have the following structures:
- pr_department:
- id: the unique (for this department) employee ID;
- name: the name of the employee;
- date_joined: the date this employee was hired by your company.
- it_department:
- id: the unique (for this department) employee ID;
- name: the name of the employee;
- date_joined: the date this employee was hired by your company.
- sales_department:
- id: the unique (for this department) employee ID;
- name: the name of the employee;
- date_joined: the date this employee was hired by your company.
Your task is to prepare a report that has the names of all the employees who were hired recently.
Given the pr_department, it_department, and sales_department tables, compose the result as follows: The resulting table should have one column names that contains the names of the last five people to join each department. The names of the employees from the pr_department should come first, followed by the it_department, and the sales_department will come last. The names of employees who work in the same department should be sorted in ascending order.
Example
For the following tables pr_department
| id | name | date_joined |
|---|---|---|
| 2 | Bertha Neiman | 2010-12-15 |
| 3 | Melissa Chace | 2012-08-14 |
| 4 | Doyle Wiste | 2015-01-02 |
| 8 | Libbie Troy | 2016-03-04 |
| 15 | Noreen Bonner | 2012-07-07 |
| 42 | Farah Dahlquist | 2006-12-12 |
it_department
| id | name | date_joined |
|---|---|---|
| 1 | Farah Dahlquist | 2017-01-15 |
| 2 | Mohammed Claycomb | 2016-06-11 |
| 3 | Allen Reger | 2015-08-12 |
| 5 | Jacque Fuhr | 2013-04-01 |
| 4 | Joya Buss | 2011-11-11 |
| 6 | Leonia Maultsby | 2009-02-02 |
| 7 | Oliva Mcgarry | 2008-05-05 |
and sales_department
| id | name | date_joined |
|---|---|---|
| 3 | Jayne Kravitz | 2009-09-09 |
| 4 | Joya Buss | 2008-08-08 |
| 7 | Edmond Kind | 2007-07-07 |
the output should be
| names |
|---|
| Bertha Neiman |
| Doyle Wiste |
| Libbie Troy |
| Melissa Chace |
| Noreen Bonner |
| Allen Reger |
| Farah Dahlquist |
| Jacque Fuhr |
| Joya Buss |
| Mohammed Claycomb |
| Edmond Kind |
| Jayne Kravitz |
| Joya Buss |
- [execution time limit] 10 seconds (mysql)
Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*Please add ; after each select statement*/
CREATE PROCEDURE recentHires()
BEGIN
SELECT name as names
FROM (
(SELECT *, 1 AS dep FROM pr_department ORDER BY date_joined DESC, name LIMIT 5)
UNION
(SELECT *, 2 AS dep FROM it_department ORDER BY date_joined DESC, name LIMIT 5)
UNION
(SELECT *, 3 AS dep FROM sales_department ORDER BY date_joined DESC, name LIMIT 5)
) u
ORDER BY dep, name;
END