SQL Challenges-1: Most experienced manager to execute the schemes
34. Most experienced manager to execute the schemes
From the following tables write a SQL query to find those experienced manager who execute the schemes. Return scheme code and scheme manager ID.
Input:
Table: managing_body
Structure:
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| manager_id | int(11) | NO | PRI | ||
| manager_name | varchar(255) | YES | |||
| running_years | int(11) | YES |
Data:
| manager_id | manager_name | running_years |
|---|---|---|
| 51 | James | 5 |
| 52 | Cork | 3 |
| 53 | Paul | 4 |
| 54 | Adam | 3 |
| 55 | Hense | 4 |
| 56 | Peter | 2 |
Table: scheme
Structure:
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| scheme_code | int(11) | NO | PRI | ||
| scheme_manager_id | int(11) | NO | PRI |
Data:
| scheme_code | scheme_manager_id |
|---|---|
| 1001 | 51 |
| 1001 | 53 |
| 1001 | 54 |
| 1001 | 56 |
| 1002 | 51 |
| 1002 | 55 |
| 1003 | 51 |
| 1004 | 52 |
Sample Solution:
SQL Code(MySQL):
CREATE TABLE managing_body (manager_id int NOT NULL UNIQUE, manager_name varchar(255), running_years int);
INSERT INTO managing_body VALUES(51,'James',5);
INSERT INTO managing_body VALUES(52,'Cork',3);
INSERT INTO managing_body VALUES(53,'Paul',4);
INSERT INTO managing_body VALUES(54,'Adam',3);
INSERT INTO managing_body VALUES(55,'Hense',4);
INSERT INTO managing_body VALUES(56,'Peter',2);
CREATE TABLE scheme (scheme_code int NOT NULL , scheme_manager_id int NOT NULL,
PRIMARY KEY(scheme_code,scheme_manager_id));
INSERT INTO scheme VALUES(1001, 51);
INSERT INTO scheme VALUES(1001, 53);
INSERT INTO scheme VALUES(1001, 54);
INSERT INTO scheme VALUES(1001, 56);
INSERT INTO scheme VALUES(1002, 51);
INSERT INTO scheme VALUES(1002, 55);
INSERT INTO scheme VALUES(1003, 51);
INSERT INTO scheme VALUES(1004, 52);
SELECT scheme_code, p.scheme_manager_id
FROM scheme p JOIN managing_body e
ON p.scheme_manager_id = e.manager_id
WHERE (scheme_code, e.running_years) IN
(SELECT scheme_code, MAX(running_years)
FROM scheme p JOIN managing_body e
ON p.scheme_manager_id = e.manager_id
GROUP BY scheme_code);
Sample Output:
scheme_code|scheme_manager_id|
-----------|-----------------|
1001| 51|
1002| 51|
1003| 51|
1004| 52|
Go to:
PREV : Schemes executed by minimum number of employees.
NEXT : Sales Analysis.
SQL Code Editor:
Contribute your code and comments through Disqus.
