题解 | #给出employees表中排名为奇数行的first_name#
给出employees表中排名为奇数行的first_name
http://www.nowcoder.com/practice/e3cf1171f6cc426bac85fd4ffa786594
题目
对于employees表,在对first_name进行排名后,选出奇数排名对应的first_name
法一:窗口函数
注意:输出的结果不需排序 --所以需要再连接一个表,按原表顺序输出
select e.first_name
from employees e JOIN
(select first_name,
row_number() over(order by first_name) rk
from employees) a using(first_name)
where a.rk%2=1
法二:count()
select e1.first_name
from employees as e1
where (
select count(*)
from employees as e2
where e2.first_name <= e1.first_name -- 统计当前(e1)first_name之前有多少条数据,即排在多少行数据
)%2=1;