查找最晚入職員工的所有信息
select * from employees where hire_date = (select max(hire_date) from employees)
查找入職員工時間排名倒數第三的員工所有信息
select * from employees order by hire_date desc limit 2, 1;
獲取所有部門中當前員工薪水最高的相關信息,給出dept_no, emp_no以及其對應的salary
select de.dept_no, de.emp_no, s.salary from dept_emp de, salaries s where de.emp_no = s.emp_no and de.to_date = '9999-01-01' and s.to_date = '9999-01-01' group by de.dept_no having max(s.salary)
從titles表獲取按照title進行分組,每組個數大於等於2,給出title以及對應的數目t。注意對於重複的emp_no進行忽略。
select t.title, count(distinct emp_no) t from titles t group by t.title having t>=2
查找employees表所有emp_no爲奇數,且last_name不爲Mary的員工信息,並按照hire_date逆序排列
select * from employees e where e.emp_no%2 = 1 and e.last_name != 'Mary' order by hire_date desc
查找當前薪水(to_date='9999-01-01')排名第二多的員工編號emp_no、薪水salary、last_name以及first_name,不準使用order by
select s.emp_no, max(s.salary) salary, e.last_name, e.first_name from salaries s, employees e where s.to_date = '9999-01-01' and s.emp_no = e.emp_no and s.salary < (select max(salary) from salaries where s.to_date = '9999-01-01')
查找所有員工的last_name和first_name以及對應的dept_name,也包括暫時沒有分配部門的員工
select e.last_name, e.first_name, d.dept_name from employees e left join dept_emp de on e.emp_no = de.emp_no left join departments d on de.dept_no = d.dept_no
查找所有員工自入職以來的薪水漲幅情況,給出員工編號emp_no以及其對應的薪水漲幅growth,並按照growth進行升序
SELECT sCurrent.emp_no, (sCurrent.salary-sStart.salary) AS growth FROM (SELECT s.emp_no, s.salary FROM salaries s WHERE s.to_date = '9999-01-01') AS sCurrent, (SELECT s.emp_no, s.salary FROM employees e, salaries s WHERE e.emp_no = s.emp_no AND s.from_date = e.hire_date) AS sStart WHERE sCurrent.emp_no = sStart.emp_no ORDER BY growth
對所有員工的當前(to_date='9999-01-01')薪水按照salary進行按照1-N的排名,相同salary並列且按照emp_no升序排列
SELECT s1.emp_no, s1.salary, COUNT(DISTINCT s2.salary) AS rank FROM salaries AS s1, salaries AS s2 WHERE s1.to_date = '9999-01-01' AND s2.to_date = '9999-01-01' AND s1.salary <= s2.salary GROUP BY s1.emp_no ORDER BY s1.salary DESC, s1.emp_no ASC