题解 | #给出employees表中排名为奇数行的first_name#

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

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

这个过程我会写的比较繁琐,但应该是最简单的理解方式,也是让我在加深记忆,大神直接避过就行!!!
这是原始表
按照题目的意思,是先对first_name 进行升序排列,然后排列完成的表中找到奇数行,再返回到原始表的顺序输出。
①:先对原始表做升序排列,这里用到窗口函数row_number() over()
SELECT *,ROW_NUMBER() OVER(ORDER BY first_name ASC) AS R
FROM employees;
由于我用的是5.7版本,窗口函数运行不了,所以只能用表格的方式来呈现结果

②:由于需要按照原表的顺序输出结果,所以还需进行量表连接
SELECT *,R
FROM employees E
LEFT JOIN (
SELECT *,ROW_NUMBER() OVER(ORDER BY first_name ASC) AS R
FROM employees
) AS D
ON E.emp_no=D.emp_no
输出结果如下

这样所需要的数据表已经全部整理出来
③输出R为奇书的first_name 只需加筛选条件即可
SELECT E,first_name
FROM employees E
LEFT JOIN (
SELECT *,ROW_NUMBER() OVER(ORDER BY first_name ASC) AS R
FROM employees
) AS D
ON E.emp_no=D.emp_no
WHERE D.R%2=1
输出结果。







全部评论

相关推荐

02-25 16:55
已编辑
北京工业大学 Java
211本,找日常实习的话,如果面向中厂的话,需要刷hot100么?因为之前从来没刷过,算法仅限于学校课程水平,准备3月投递简历,现在还需要背八股文,时间有些紧张,还需要刷算法题么?同时什么样的公司可以算是中厂呢?
程序员小白条:中大厂说的上名字的,必定要算法,hot100只是最基础的了,题库远不止100题捏,一般在300-400题量之间,算法=学校课程=简单题也做不出,多准备八股文和算法吧,其他项目可以放放,精刷算法就行了,花时间成长很快的
点赞 评论 收藏
分享
烤点老白薯:越上了年纪越感觉自己死期将至了。到最后什么都会没有。什么东西都变得无所谓,差不多就得了,一份工作能维持未来的基本生存需要,就已经很好了。平平安安的活着最重要啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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