mariadb/mysql-test/r/win_percent_cume.result
Vicențiu Ciorbaru 1c6b982e02 MDEV-12779 Oracle/DB2 Compatibility Implicit Ordering for ROW_NUMBER OVER
Users expect window functions to produce a certain ordering of rows in
the final result set. Although the standard does not require this, we
already have the filesort result done for when we computed the window
function. If there is no ORDER BY attached to the query, just keep it
till the SELECT is completely evaluated and use that to print the
result.

Update test cases as many did not take care to guarantee a stable
result.
2018-11-01 21:15:55 +02:00

62 lines
1.6 KiB
Text

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,
percent_rank() over (order by a),
cume_dist() over (order by a)
from t1;
a percent_rank() over (order by a) cume_dist() over (order by a)
0 0.0000000000 0.2000000000
0 0.0000000000 0.2000000000
1 0.2222222222 0.4000000000
1 0.2222222222 0.4000000000
2 0.4444444444 0.8000000000
2 0.4444444444 0.8000000000
2 0.4444444444 0.8000000000
2 0.4444444444 0.8000000000
4 0.8888888889 1.0000000000
4 0.8888888889 1.0000000000
select pk,
percent_rank() over (order by pk),
cume_dist() over (order by pk)
from t1 order by pk;
pk percent_rank() over (order by pk) cume_dist() over (order by pk)
1 0.0000000000 0.1000000000
2 0.1111111111 0.2000000000
3 0.2222222222 0.3000000000
4 0.3333333333 0.4000000000
5 0.4444444444 0.5000000000
6 0.5555555556 0.6000000000
7 0.6666666667 0.7000000000
8 0.7777777778 0.8000000000
9 0.8888888889 0.9000000000
10 1.0000000000 1.0000000000
select a,
percent_rank() over (partition by a order by a),
cume_dist() over (partition by a order by a)
from t1;
a percent_rank() over (partition by a order by a) cume_dist() over (partition by a order by a)
0 0.0000000000 1.0000000000
0 0.0000000000 1.0000000000
1 0.0000000000 1.0000000000
1 0.0000000000 1.0000000000
2 0.0000000000 1.0000000000
2 0.0000000000 1.0000000000
2 0.0000000000 1.0000000000
2 0.0000000000 1.0000000000
4 0.0000000000 1.0000000000
4 0.0000000000 1.0000000000
drop table t1;