题解 | %是一个运算符,用于返回除法的余数。

给出employees表中排名为奇数行的first_name

https://www.nowcoder.com/practice/e3cf1171f6cc426bac85fd4ffa786594

/*SELECT first_name
FROM (
    SELECT first_name, ROW_NUMBER() OVER (ORDER BY first_name) as row_num, ROW_NUMBER() OVER (ORDER BY emp_no) as original_order
    FROM employees
) as temp
WHERE temp.row_num % 2 = 1
ORDER BY temp.original_order;*/ 
#之所以这样写是默认emp_no是默认升序排列的,但题目中没有明确说明,严谨来说如果emp_no不是默认升序的话这么写还是会打乱默认顺序

/*select t.first_name
from(select first_name,emp_no,row_number()over(order by first_name) rn from employees) t
where rn%2=1
order by t.emp_no*/
#我用这个代码验证了一下上述猜想,果然emp_no是默认升序,也就是说间接证明了如果不是默认升序这么写就不符合题目要求

select em.first_name
from employees em left join (select first_name,row_number()over(order by first_name) rn from employees) t on em.first_name=t.first_name
where t.rn%2=1
#这么写是一定满足题目要求保持表格原始顺序进行输出的

全部评论

相关推荐

11-04 10:30
已编辑
门头沟学院 研发工程师
开心小狗🐶:“直接说答案”
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务