SQL錯題集

查找最晚入職員工的所有信息

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章