本题容易形成的纠结是使用窗口函数受排序的影响,所以需要消除这影响,就需要用到from...join...on...建立联结表来消除并恢复到原有表的状态。
首先,使用窗口函数:
select first_name from(select first_name, row_number() over(order by first_name) as first_name_row from employees) as e where mod(first_name_row,2)=1;
最终,用到from...join...on...建立联结表实现题目的显示需求
select e1.first_name -- 注意显示的原表employees.first_name即可是原表不排序状态 from employeesa as e1 join (select first_name, -- 通过from ...join...on...建立表联结来消除first_name升序带来的排序影响,恢复到原表的显示状态 row_number() over(order by first_name) as first_name_row from employeesa) as e2 on e1.first_name=e2.first_name where mod(first_name_row,2)=1;