题解 | #SQL255,无需表连接,两个窗口函数搞定#
给出employees表中排名为奇数行的first_name
https://www.nowcoder.com/practice/e3cf1171f6cc426bac85fd4ffa786594
select
first_name first
from
(
select
first_name,
row_number() over() rawOrder, #原始的排序
rank() over(order by first_name) nameOrder
from
employees
)t
where
nameOrder%2=1
order by
rawOrder
看了几个答案都是用了窗口函数和表连接一起做,这里无需表连接直接做。
可以使用一个单独的排名rawOrder,它用来记录原始的序号,方便后续排序。再用一个nameOrder对那么进行排序,这个是为了后面筛选。通过两个窗口函数就做出来了。
查看21道真题和解析