题解 | #插入记录(二)#

注册时间最早的三个人

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

SELECT uid, nick_name ,register_time
FROM user_info
ORDER BY register_time
LIMIT 3

SELECT t.uid, t.nick_name , t.register_time
FROM
(SELECT uid, nick_name ,register_time,
 ROW_NUMBER() OVER(ORDER BY register_time ASC) rk
 FROM user_info
) t
WHERE rk<=3

注意:用窗口函数的时候,只能用ROW_NUMBER(),不可以用RANK()和DENSE_RANK() 原因如下:

ROW_NUMBER(): 排名时不管是否有相同的,都按1,2,3...n排名,(相同的排名先后应该是看表格的第一字段,若相同再看第二个字段排名,以此类推)(我猜测的)

RANK(): 如果排名的字段有相同的,会将相同的字段并列排名,并跳过后面的排名,

DENSE_RANK(): 如果排名的字段有相同的,会将相同的字段并列排名,但是不会跳过后面的排名

WHERE 子句这里 rk<=3,如果时间有相同的,用RANK()和DENSE_RANK()筛选出来的会大于3个

全部评论

相关推荐

头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务