diff options
Diffstat (limited to 'mysql-test/main/win_rank.test')
-rw-r--r-- | mysql-test/main/win_rank.test | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/mysql-test/main/win_rank.test b/mysql-test/main/win_rank.test new file mode 100644 index 00000000..c58ff054 --- /dev/null +++ b/mysql-test/main/win_rank.test @@ -0,0 +1,61 @@ +--echo # +--echo # Try DENSE_RANK() function +--echo # + +create table t1 ( + pk int primary key, + a int, + b int +); + +insert into t1 values +( 1 , 0, 10), +( 2 , 0, 10), +( 3 , 1, 10), +( 4 , 1, 10), +( 8 , 2, 10), +( 5 , 2, 20), +( 6 , 2, 20), +( 7 , 2, 20), +( 9 , 4, 20), +(10 , 4, 20); + +select a, rank() over (order by a) as rank, + dense_rank() over (order by a) as dense_rank +from t1; +select a, b, rank() over (partition by b order by a) as rank, + dense_rank() over (partition by b order by a) as dense_rank +from t1; + +drop table t1; + +--echo # +--echo # Test with null values in the table. +--echo # + +create table t2 (s1 int, s2 char(5)); +insert into t2 values (1,'a'); +insert into t2 values (null,null); +insert into t2 values (1,null); +insert into t2 values (null,'a'); +insert into t2 values (null,'c'); +insert into t2 values (2,'b'); +insert into t2 values (-1,''); + +select *, rank() over (order by s1) as rank, + dense_rank() over (order by s1) as dense_rank +from t2 +order by s1, s2; +select *, rank() over (partition by s2 order by s1) as rank, + dense_rank() over (partition by s2 order by s1) as dense_rank +from t2 +order by s1, s2; +select *, rank() over (order by s2) as rank, + dense_rank() over (order by s2) as dense_rank +from t2 +order by s2, s1; +select *, rank() over (partition by s1 order by s2) as rank, + dense_rank() over (partition by s1 order by s2) as dense_rank +from t2; + +drop table t2; |