问题:请你在不打乱原序列顺序的情况下,输出:按first_name排升序后,取奇数行的first_name。

拆解问题:1.先提取出字段firstname,员工编号emp_no,创建一个新的字段rank()over(order by first_name)重命名为r,得到新的表格re,re的内容是

first_name r
name1 1
name2 2
name3 3
...

2.用r&1来提取奇数列内容,(或者r%2=1)

3.题目要求不改变原有表格的排列顺序,所以需要在用两个表格链接一下,用新表格re和原始表格employees as e2链接,提取奇数列内容,然后根据原始表格e2中的员工编号排序,输出的firstname就是按照原始表格排序的内容了。

select re.first_name from employees e2
join
(select e.first_name,e.emp_no, rank()over(order by e.first_name) as r from employees e
order by r
) as re 
on e2.emp_no=re.emp_no
where re.r &1
order by e2.emp_no