首页 > 其他 > 详细

关于rank、dense_rank、ROW_NUMBER及OVER(PARTITION BY)、OVER(ORDER BY)的一些用法

时间:2015-06-01 16:02:45      阅读:263      评论:0      收藏:0      [点我收藏+]
CREATE TABLE t_harry (
    id int NOT NULL,
    Number varchar(255) DEFAULT NULL,
    ChannelID varchar(255) DEFAULT NULL,
    TimeStamp datetime DEFAULT NULL,
    PRIMARY KEY (id)
) ;
INSERT INTO t_harry VALUES (1, Group3, 3, 2015-05-27 00:00:00);
INSERT INTO t_harry VALUES (2, Group2, 5, 2015-05-23 00:00:00);
INSERT INTO t_harry VALUES (3, Group1, 4, 2015-05-23 00:00:00);
INSERT INTO t_harry VALUES (4, Group2, 3, 2015-05-29 00:00:00);
INSERT INTO t_harry VALUES (7, Group1, 2, 2015-05-30 00:00:00);


SELECT B.* FROM t_harry B
LEFT JOIN
(
SELECT Number,max(ChannelID) [MaxID] FROM t_harry GROUP BY Number
) A ON B.Number=A.Number
ORDER BY A.MaxID DESC , B.ChannelID DESC 


SELECT rank() OVER(ORDER BY TimeStamp) [Rank],
dense_rank() OVER(ORDER BY TimeStamp) [dense_rank],
ROW_NUMBER() OVER(ORDER BY TimeStamp) [Row_Number],
ROW_NUMBER() OVER(PARTITION BY Number ORDER BY TimeStamp) [Row_Number],
* FROM t_harry 
ORDER BY max(Channelid) OVER (PARTITION BY Number) DESC, channelid DESC

DROP TABLE t_harry

 

关于rank、dense_rank、ROW_NUMBER及OVER(PARTITION BY)、OVER(ORDER BY)的一些用法

原文:http://www.cnblogs.com/harryhan1983/p/4543915.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!