题解 | #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对那么进行排序,这个是为了后面筛选。通过两个窗口函数就做出来了。