SQL Subquery Practice Exercises
SQL Subquery Practice Exercises
To find the first hired employee per job department, use: SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, JOB_ID, DEPARTMENT_ID FROM employee_details WHERE EMPLOYEE_ID IN (SELECT FIRST_VALUE(EMPLOYEE_ID) OVER w AS first_person_hired FROM employee_details WINDOW w AS (PARTITION BY JOB_ID ORDER BY hire_date DESC)).
To get employees from the 'Contracting' department, use: SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, PHONE_NUMBER, SALARY, JOB_ID FROM employee_details WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM department_details WHERE DEPARTMENT_NAME = 'Contracting').
To find clerks earning more than any IT programmer, use: SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY, PHONE_NUMBER, EMAIL FROM (SELECT * FROM employee_details WHERE JOB_ID = 'ST_CLERK') AS t WHERE t.SALARY > ANY (SELECT SALARY FROM employee_details WHERE JOB_ID = 'IT_PROG').
To find employees hired after the average hire date, use: WITH middle AS (SELECT ROUND(IF(MOD(@mi,2) != 0, (@mi + 1) / 2, ((@mi/2)+((@mi/2)+1))/2)) AS c), mhire AS (SELECT HIRE_DATE, ROW_NUMBER() OVER(ORDER BY HIRE_DATE) AS r FROM employee_details) SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, DEPARTMENT_ID FROM employee_details WHERE HIRE_DATE > (SELECT HIRE_DATE FROM mhire, middle WHERE middle.c = mhire.r).
Use this query: SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, PHONE_NUMBER, SALARY, JOB_ID FROM employee_details WHERE DEPARTMENT_ID NOT IN (SELECT DEPARTMENT_ID FROM department_details WHERE DEPARTMENT_NAME = 'Contracting').
Identify such accountants using: SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY, PHONE_NUMBER, EMAIL FROM (SELECT * FROM employee_details WHERE JOB_ID = 'AC_ACCOUNTANT') AS t WHERE t.SALARY > ALL (SELECT SALARY FROM employee_details WHERE JOB_ID = 'AD_VP').
To retrieve employee details where salary exceeds the average, use: SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY FROM employee_details WHERE SALARY > (SELECT AVG(SALARY) FROM employee_details).
To extract employees with the highest salary within their job, the query is: SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY, JOB_ID FROM employee_details WHERE SALARY IN (SELECT MAX(SALARY) OVER(PARTITION BY JOB_ID) AS max_salary FROM employee_details).
Use the following query: SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, JOB_ID, DEPARTMENT_ID FROM employee_details WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM department_details WHERE DEPARTMENT_NAME IN ('Shipping', 'Executive', 'Finance')).
The query to find employees in a department with a specific location is: SELECT FIRST_NAME, LAST_NAME, DEPARTMENT_ID FROM employee_details WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM department_details WHERE LOCATION_ID = 1700).