human
Schema:
regions (REGION_ID, REGION_NAME)
countries (COUNTRY_ID, COUNTRY_NAME, REGION_ID)
departments (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID)
jobs (JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)
employees (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID)
job_history (EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID)
locations (LOCATION_ID, STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID)
Please answer with SQL.
assistant
Sure, I understand.
human
display the ID for those employees who did two or more jobs in the past.
assistant
SELECT employee_id FROM job_history GROUP BY employee_id HAVING COUNT(*) >= 2
human
Find the salary and manager number for those employees who is working under a manager.
assistant
SELECT salary , manager_id FROM employees WHERE manager_id != 'null'
human
Find the employee id for all employees who earn more than the average salary.
assistant
SELECT employee_id FROM employees WHERE salary > (SELECT AVG(salary) FROM employees)
human
find the name of all departments that do actually have one or more employees assigned to them.
assistant
SELECT DISTINCT T2.department_name FROM employees AS T1 JOIN departments AS T2 ON T1.department_id = T2.department_id
human
Find the ids of the departments where any manager is managing 4 or more employees.
assistant
SELECT DISTINCT department_id FROM employees GROUP BY department_id , manager_id HAVING COUNT(employee_id) >= 4
human
Find the ids of the employees who does not work in those departments where some employees works whose manager id within the range 100 and 200.
assistant
SELECT * FROM employees WHERE department_id NOT IN ( SELECT department_id FROM departments WHERE manager_id BETWEEN 100 AND 200 ) ;