1# 2018 May 31 2# 3# The author disclaims copyright to this source code. In place of 4# a legal notice, here is a blessing: 5# 6# May you do good and not evil. 7# May you find forgiveness for yourself and forgive others. 8# May you share freely, never taking more than you give. 9# 10#*********************************************************************** 11# This file implements regression tests for SQLite library. 12# 13 14#################################################### 15# DO NOT EDIT! THIS FILE IS AUTOMATICALLY GENERATED! 16#################################################### 17 18set testdir [file dirname $argv0] 19source $testdir/tester.tcl 20set testprefix window3 21 22do_execsql_test 1.0 { 23 DROP TABLE IF EXISTS t2; 24 CREATE TABLE t2(a INTEGER PRIMARY KEY, b INTEGER); 25 INSERT INTO t2(a, b) VALUES 26 (1,0), (2,74), (3,41), (4,74), (5,23), (6,99), (7,26), (8,33), (9,2), 27 (10,89), (11,81), (12,96), (13,59), (14,38), (15,68), (16,39), (17,62), 28 (18,91), (19,46), (20,6), (21,99), (22,97), (23,27), (24,46), (25,78), 29 (26,54), (27,97), (28,8), (29,67), (30,29), (31,93), (32,84), (33,77), 30 (34,23), (35,16), (36,16), (37,93), (38,65), (39,35), (40,47), (41,7), 31 (42,86), (43,74), (44,61), (45,91), (46,85), (47,24), (48,85), (49,43), 32 (50,59), (51,12), (52,32), (53,56), (54,3), (55,91), (56,22), (57,90), 33 (58,55), (59,15), (60,28), (61,89), (62,25), (63,47), (64,1), (65,56), 34 (66,40), (67,43), (68,56), (69,16), (70,75), (71,36), (72,89), (73,98), 35 (74,76), (75,81), (76,4), (77,94), (78,42), (79,30), (80,78), (81,33), 36 (82,29), (83,53), (84,63), (85,2), (86,87), (87,37), (88,80), (89,84), 37 (90,72), (91,41), (92,9), (93,61), (94,73), (95,95), (96,65), (97,13), 38 (98,58), (99,96), (100,98), (101,1), (102,21), (103,74), (104,65), (105,35), 39 (106,5), (107,73), (108,11), (109,51), (110,87), (111,41), (112,12), (113,8), 40 (114,20), (115,31), (116,31), (117,15), (118,95), (119,22), (120,73), 41 (121,79), (122,88), (123,34), (124,8), (125,11), (126,49), (127,34), 42 (128,90), (129,59), (130,96), (131,60), (132,55), (133,75), (134,77), 43 (135,44), (136,2), (137,7), (138,85), (139,57), (140,74), (141,29), (142,70), 44 (143,59), (144,19), (145,39), (146,26), (147,26), (148,47), (149,80), 45 (150,90), (151,36), (152,58), (153,47), (154,9), (155,72), (156,72), (157,66), 46 (158,33), (159,93), (160,75), (161,64), (162,81), (163,9), (164,23), (165,37), 47 (166,13), (167,12), (168,14), (169,62), (170,91), (171,36), (172,91), 48 (173,33), (174,15), (175,34), (176,36), (177,99), (178,3), (179,95), (180,69), 49 (181,58), (182,52), (183,30), (184,50), (185,84), (186,10), (187,84), 50 (188,33), (189,21), (190,39), (191,44), (192,58), (193,30), (194,38), 51 (195,34), (196,83), (197,27), (198,82), (199,17), (200,7); 52} {} 53 54do_execsql_test 1.1 { 55 SELECT max(b) OVER ( 56 ORDER BY a 57 ) FROM t2 58} {0 74 74 74 74 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99} 59 60do_execsql_test 1.1.2.1 { 61 SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 62} {0 74 74 74 74 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99} 63 64do_execsql_test 1.1.2.2 { 65 SELECT min(b) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 66} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} 67 68do_execsql_test 1.1.3.1 { 69 SELECT row_number() OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 70} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 71 72do_execsql_test 1.1.3.2 { 73 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 74} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 75 76do_execsql_test 1.1.4.1 { 77 SELECT dense_rank() OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 78} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 79 80do_execsql_test 1.1.4.2 { 81 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 82} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 83 84do_execsql_test 1.1.4.3 { 85 SELECT dense_rank() OVER ( ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 86} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 87 88do_execsql_test 1.1.4.4 { 89 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 90} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 91 92do_execsql_test 1.1.4.5 { 93 SELECT dense_rank() OVER ( ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 94} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 95 96do_execsql_test 1.1.4.6 { 97 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 98} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 99 100do_execsql_test 1.1.5.1 { 101 SELECT rank() OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 102} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 103 104do_execsql_test 1.1.5.2 { 105 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 106} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 107 108do_execsql_test 1.1.5.3 { 109 SELECT rank() OVER ( ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 110} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 111 112do_execsql_test 1.1.5.4 { 113 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 114} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 115 116do_execsql_test 1.1.5.5 { 117 SELECT rank() OVER ( ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 118} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 119 120do_execsql_test 1.1.5.6 { 121 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 122} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 123 124do_execsql_test 1.1.6.1 { 125 SELECT 126 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ), 127 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ), 128 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 129 FROM t2 130} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 131 132do_execsql_test 1.1.7.1 { 133 SELECT CAST( round( 100 * 134 percent_rank() OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 135 ) AS integer) FROM t2 136} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 137 138do_execsql_test 1.1.7.3 { 139 SELECT CAST( round( 100 * 140 percent_rank() OVER ( ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 141 ) AS integer) FROM t2 142} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 143 144do_execsql_test 1.1.7.5 { 145 SELECT CAST( round( 100 * 146 percent_rank() OVER ( ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 147 ) AS integer) FROM t2 148} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 149 150do_execsql_test 1.1.7.6 { 151 SELECT CAST( round( 100 * 152 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 153 ) AS integer) FROM t2 154} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 155 156do_execsql_test 1.2.2.1 { 157 SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 158} {99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99} 159 160do_execsql_test 1.2.2.2 { 161 SELECT min(b) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 162} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} 163 164do_execsql_test 1.2.3.1 { 165 SELECT row_number() OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 166} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 167 168do_execsql_test 1.2.3.2 { 169 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 170} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 171 172do_execsql_test 1.2.4.1 { 173 SELECT dense_rank() OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 174} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 175 176do_execsql_test 1.2.4.2 { 177 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 178} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 179 180do_execsql_test 1.2.4.3 { 181 SELECT dense_rank() OVER ( ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 182} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 183 184do_execsql_test 1.2.4.4 { 185 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 186} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 187 188do_execsql_test 1.2.4.5 { 189 SELECT dense_rank() OVER ( ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 190} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 191 192do_execsql_test 1.2.4.6 { 193 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 194} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 195 196do_execsql_test 1.2.5.1 { 197 SELECT rank() OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 198} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 199 200do_execsql_test 1.2.5.2 { 201 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 202} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 203 204do_execsql_test 1.2.5.3 { 205 SELECT rank() OVER ( ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 206} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 207 208do_execsql_test 1.2.5.4 { 209 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 210} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 211 212do_execsql_test 1.2.5.5 { 213 SELECT rank() OVER ( ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 214} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 215 216do_execsql_test 1.2.5.6 { 217 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 218} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 219 220do_execsql_test 1.2.6.1 { 221 SELECT 222 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ), 223 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ), 224 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 225 FROM t2 226} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 227 228do_execsql_test 1.2.7.1 { 229 SELECT CAST( round( 100 * 230 percent_rank() OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 231 ) AS integer) FROM t2 232} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 233 234do_execsql_test 1.2.7.3 { 235 SELECT CAST( round( 100 * 236 percent_rank() OVER ( ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 237 ) AS integer) FROM t2 238} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 239 240do_execsql_test 1.2.7.5 { 241 SELECT CAST( round( 100 * 242 percent_rank() OVER ( ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 243 ) AS integer) FROM t2 244} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 245 246do_execsql_test 1.2.7.6 { 247 SELECT CAST( round( 100 * 248 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 249 ) AS integer) FROM t2 250} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 251 252do_execsql_test 1.3.2.1 { 253 SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 254} {0 74 41 74 23 99 26 33 2 89 81 96 59 38 68 39 62 91 46 6 99 97 27 46 78 54 97 8 67 29 93 84 77 23 16 16 93 65 35 47 7 86 74 61 91 85 24 85 43 59 12 32 56 3 91 22 90 55 15 28 89 25 47 1 56 40 43 56 16 75 36 89 98 76 81 4 94 42 30 78 33 29 53 63 2 87 37 80 84 72 41 9 61 73 95 65 13 58 96 98 1 21 74 65 35 5 73 11 51 87 41 12 8 20 31 31 15 95 22 73 79 88 34 8 11 49 34 90 59 96 60 55 75 77 44 2 7 85 57 74 29 70 59 19 39 26 26 47 80 90 36 58 47 9 72 72 66 33 93 75 64 81 9 23 37 13 12 14 62 91 36 91 33 15 34 36 99 3 95 69 58 52 30 50 84 10 84 33 21 39 44 58 30 38 34 83 27 82 17 7} 255 256do_execsql_test 1.3.2.2 { 257 SELECT min(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 258} {0 74 41 74 23 99 26 33 2 89 81 96 59 38 68 39 62 91 46 6 99 97 27 46 78 54 97 8 67 29 93 84 77 23 16 16 93 65 35 47 7 86 74 61 91 85 24 85 43 59 12 32 56 3 91 22 90 55 15 28 89 25 47 1 56 40 43 56 16 75 36 89 98 76 81 4 94 42 30 78 33 29 53 63 2 87 37 80 84 72 41 9 61 73 95 65 13 58 96 98 1 21 74 65 35 5 73 11 51 87 41 12 8 20 31 31 15 95 22 73 79 88 34 8 11 49 34 90 59 96 60 55 75 77 44 2 7 85 57 74 29 70 59 19 39 26 26 47 80 90 36 58 47 9 72 72 66 33 93 75 64 81 9 23 37 13 12 14 62 91 36 91 33 15 34 36 99 3 95 69 58 52 30 50 84 10 84 33 21 39 44 58 30 38 34 83 27 82 17 7} 259 260do_execsql_test 1.3.3.1 { 261 SELECT row_number() OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 262} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 263 264do_execsql_test 1.3.3.2 { 265 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 266} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 267 268do_execsql_test 1.3.4.1 { 269 SELECT dense_rank() OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 270} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 271 272do_execsql_test 1.3.4.2 { 273 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 274} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 275 276do_execsql_test 1.3.4.3 { 277 SELECT dense_rank() OVER ( ORDER BY b RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 278} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 279 280do_execsql_test 1.3.4.4 { 281 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 282} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 283 284do_execsql_test 1.3.4.5 { 285 SELECT dense_rank() OVER ( ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 286} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 287 288do_execsql_test 1.3.4.6 { 289 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 290} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 291 292do_execsql_test 1.3.5.1 { 293 SELECT rank() OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 294} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 295 296do_execsql_test 1.3.5.2 { 297 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 298} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 299 300do_execsql_test 1.3.5.3 { 301 SELECT rank() OVER ( ORDER BY b RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 302} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 303 304do_execsql_test 1.3.5.4 { 305 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 306} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 307 308do_execsql_test 1.3.5.5 { 309 SELECT rank() OVER ( ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 310} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 311 312do_execsql_test 1.3.5.6 { 313 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 314} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 315 316do_execsql_test 1.3.6.1 { 317 SELECT 318 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND CURRENT ROW ), 319 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND CURRENT ROW ), 320 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) 321 FROM t2 322} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 323 324do_execsql_test 1.3.7.1 { 325 SELECT CAST( round( 100 * 326 percent_rank() OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) 327 ) AS integer) FROM t2 328} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 329 330do_execsql_test 1.3.7.3 { 331 SELECT CAST( round( 100 * 332 percent_rank() OVER ( ORDER BY b RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) 333 ) AS integer) FROM t2 334} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 335 336do_execsql_test 1.3.7.5 { 337 SELECT CAST( round( 100 * 338 percent_rank() OVER ( ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) 339 ) AS integer) FROM t2 340} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 341 342do_execsql_test 1.3.7.6 { 343 SELECT CAST( round( 100 * 344 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND CURRENT ROW ) 345 ) AS integer) FROM t2 346} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 347 348do_execsql_test 1.4.2.1 { 349 SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 350} {99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 95 95 84 84 84 84 84 84 84 84 83 83 83 83 83 83 83 83 83 82 82 17 7} 351 352do_execsql_test 1.4.2.2 { 353 SELECT min(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 354} {0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7} 355 356do_execsql_test 1.4.3.1 { 357 SELECT row_number() OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 358} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 359 360do_execsql_test 1.4.3.2 { 361 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 362} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 363 364do_execsql_test 1.4.4.1 { 365 SELECT dense_rank() OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 366} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 367 368do_execsql_test 1.4.4.2 { 369 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 370} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 371 372do_execsql_test 1.4.4.3 { 373 SELECT dense_rank() OVER ( ORDER BY b RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 374} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 375 376do_execsql_test 1.4.4.4 { 377 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 378} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 379 380do_execsql_test 1.4.4.5 { 381 SELECT dense_rank() OVER ( ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 382} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 383 384do_execsql_test 1.4.4.6 { 385 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 386} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 387 388do_execsql_test 1.4.5.1 { 389 SELECT rank() OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 390} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 391 392do_execsql_test 1.4.5.2 { 393 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 394} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 395 396do_execsql_test 1.4.5.3 { 397 SELECT rank() OVER ( ORDER BY b RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 398} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 399 400do_execsql_test 1.4.5.4 { 401 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 402} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 403 404do_execsql_test 1.4.5.5 { 405 SELECT rank() OVER ( ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 406} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 407 408do_execsql_test 1.4.5.6 { 409 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 410} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 411 412do_execsql_test 1.4.6.1 { 413 SELECT 414 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ), 415 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ), 416 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 417 FROM t2 418} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 419 420do_execsql_test 1.4.7.1 { 421 SELECT CAST( round( 100 * 422 percent_rank() OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 423 ) AS integer) FROM t2 424} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 425 426do_execsql_test 1.4.7.3 { 427 SELECT CAST( round( 100 * 428 percent_rank() OVER ( ORDER BY b RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 429 ) AS integer) FROM t2 430} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 431 432do_execsql_test 1.4.7.5 { 433 SELECT CAST( round( 100 * 434 percent_rank() OVER ( ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 435 ) AS integer) FROM t2 436} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 437 438do_execsql_test 1.4.7.6 { 439 SELECT CAST( round( 100 * 440 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 441 ) AS integer) FROM t2 442} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 443 444do_execsql_test 1.5.2.1 { 445 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 446} {{} {} {} {} 0 74 74 74 74 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99} 447 448do_execsql_test 1.5.2.2 { 449 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 450} {{} {} {} {} 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} 451 452do_execsql_test 1.5.3.1 { 453 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 454} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 455 456do_execsql_test 1.5.3.2 { 457 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 458} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 459 460do_execsql_test 1.5.4.1 { 461 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 462} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 463 464do_execsql_test 1.5.4.2 { 465 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 466} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 467 468do_execsql_test 1.5.4.3 { 469 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 470} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 471 472do_execsql_test 1.5.4.4 { 473 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 474} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 475 476do_execsql_test 1.5.4.5 { 477 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 478} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 479 480do_execsql_test 1.5.4.6 { 481 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 482} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 483 484do_execsql_test 1.5.5.1 { 485 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 486} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 487 488do_execsql_test 1.5.5.2 { 489 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 490} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 491 492do_execsql_test 1.5.5.3 { 493 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 494} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 495 496do_execsql_test 1.5.5.4 { 497 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 498} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 499 500do_execsql_test 1.5.5.5 { 501 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 502} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 503 504do_execsql_test 1.5.5.6 { 505 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2 506} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 507 508do_execsql_test 1.5.6.1 { 509 SELECT 510 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ), 511 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ), 512 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) 513 FROM t2 514} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 515 516do_execsql_test 1.5.7.1 { 517 SELECT CAST( round( 100 * 518 percent_rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) 519 ) AS integer) FROM t2 520} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 521 522do_execsql_test 1.5.7.3 { 523 SELECT CAST( round( 100 * 524 percent_rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) 525 ) AS integer) FROM t2 526} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 527 528do_execsql_test 1.5.7.5 { 529 SELECT CAST( round( 100 * 530 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) 531 ) AS integer) FROM t2 532} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 533 534do_execsql_test 1.5.7.6 { 535 SELECT CAST( round( 100 * 536 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) 537 ) AS integer) FROM t2 538} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 539 540do_execsql_test 1.6.2.1 { 541 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 542} {{} {} 0 74 74 74 74 99 99 99 33 89 89 96 96 96 68 68 68 91 91 91 99 99 99 97 78 78 97 97 97 67 93 93 93 84 77 23 93 93 93 65 47 86 86 86 91 91 91 85 85 85 59 59 56 56 91 91 91 90 90 55 89 89 89 47 56 56 56 56 56 75 75 89 98 98 98 81 94 94 94 78 78 78 53 63 63 87 87 87 84 84 84 72 61 73 95 95 95 65 96 98 98 98 74 74 74 65 73 73 73 87 87 87 41 20 31 31 31 95 95 95 79 88 88 88 34 49 49 90 90 96 96 96 75 77 77 77 44 85 85 85 74 74 70 70 59 39 39 47 80 90 90 90 58 58 72 72 72 72 93 93 93 81 81 81 37 37 37 14 62 91 91 91 91 91 34 36 99 99 99 95 95 69 58 52 84 84 84 84 84 39 44 58 58 58 38 83 83 83} 543 544do_execsql_test 1.6.2.2 { 545 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 546} {{} {} 0 0 0 41 23 23 23 26 2 2 2 81 59 38 38 38 39 39 46 6 6 6 27 27 27 46 54 8 8 8 29 29 77 23 16 16 16 16 35 35 7 7 7 61 61 61 24 24 24 43 12 12 12 3 3 3 22 22 15 15 15 25 25 1 1 1 40 40 16 16 16 36 36 76 76 4 4 4 30 30 30 29 29 29 2 2 2 37 37 72 41 9 9 9 61 65 13 13 13 58 1 1 1 21 35 5 5 5 11 11 41 12 8 8 8 20 15 15 15 22 22 73 34 8 8 8 11 34 34 59 59 55 55 55 44 2 2 2 7 57 29 29 29 19 19 19 26 26 26 47 36 36 36 9 9 9 66 33 33 33 64 64 9 9 9 13 12 12 12 14 36 36 33 15 15 15 34 3 3 3 58 52 30 30 30 10 10 10 21 21 21 39 30 30 30 34 27 27} 547 548do_execsql_test 1.6.3.1 { 549 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 550} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 551 552do_execsql_test 1.6.3.2 { 553 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 554} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 555 556do_execsql_test 1.6.4.1 { 557 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 558} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 559 560do_execsql_test 1.6.4.2 { 561 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 562} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 563 564do_execsql_test 1.6.4.3 { 565 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 566} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 567 568do_execsql_test 1.6.4.4 { 569 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 570} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 571 572do_execsql_test 1.6.4.5 { 573 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 574} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 575 576do_execsql_test 1.6.4.6 { 577 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 578} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 579 580do_execsql_test 1.6.5.1 { 581 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 582} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 583 584do_execsql_test 1.6.5.2 { 585 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 586} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 587 588do_execsql_test 1.6.5.3 { 589 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 590} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 591 592do_execsql_test 1.6.5.4 { 593 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 594} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 595 596do_execsql_test 1.6.5.5 { 597 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 598} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 599 600do_execsql_test 1.6.5.6 { 601 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) FROM t2 602} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 603 604do_execsql_test 1.6.6.1 { 605 SELECT 606 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ), 607 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ), 608 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) 609 FROM t2 610} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 611 612do_execsql_test 1.6.7.1 { 613 SELECT CAST( round( 100 * 614 percent_rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) 615 ) AS integer) FROM t2 616} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 617 618do_execsql_test 1.6.7.3 { 619 SELECT CAST( round( 100 * 620 percent_rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) 621 ) AS integer) FROM t2 622} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 623 624do_execsql_test 1.6.7.5 { 625 SELECT CAST( round( 100 * 626 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) 627 ) AS integer) FROM t2 628} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 629 630do_execsql_test 1.6.7.6 { 631 SELECT CAST( round( 100 * 632 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING ) 633 ) AS integer) FROM t2 634} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 635 636do_execsql_test 1.7.2.1 { 637 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 638} {0 74 74 74 74 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99} 639 640do_execsql_test 1.7.2.2 { 641 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 642} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} 643 644do_execsql_test 1.7.3.1 { 645 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 646} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 647 648do_execsql_test 1.7.3.2 { 649 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 650} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 651 652do_execsql_test 1.7.4.1 { 653 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 654} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 655 656do_execsql_test 1.7.4.2 { 657 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 658} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 659 660do_execsql_test 1.7.4.3 { 661 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 662} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 663 664do_execsql_test 1.7.4.4 { 665 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 666} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 667 668do_execsql_test 1.7.4.5 { 669 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 670} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 671 672do_execsql_test 1.7.4.6 { 673 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 674} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 675 676do_execsql_test 1.7.5.1 { 677 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 678} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 679 680do_execsql_test 1.7.5.2 { 681 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 682} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 683 684do_execsql_test 1.7.5.3 { 685 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 686} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 687 688do_execsql_test 1.7.5.4 { 689 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 690} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 691 692do_execsql_test 1.7.5.5 { 693 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 694} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 695 696do_execsql_test 1.7.5.6 { 697 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2 698} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 699 700do_execsql_test 1.7.6.1 { 701 SELECT 702 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ), 703 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ), 704 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 705 FROM t2 706} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 707 708do_execsql_test 1.7.7.1 { 709 SELECT CAST( round( 100 * 710 percent_rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 711 ) AS integer) FROM t2 712} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 713 714do_execsql_test 1.7.7.3 { 715 SELECT CAST( round( 100 * 716 percent_rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 717 ) AS integer) FROM t2 718} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 719 720do_execsql_test 1.7.7.5 { 721 SELECT CAST( round( 100 * 722 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 723 ) AS integer) FROM t2 724} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 725 726do_execsql_test 1.7.7.6 { 727 SELECT CAST( round( 100 * 728 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) 729 ) AS integer) FROM t2 730} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 731 732do_execsql_test 1.8.2.1 { 733 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 734} {0 74 74 74 74 99 99 99 99 99 89 96 96 96 96 96 68 91 91 91 99 99 99 99 99 97 97 97 97 97 97 93 93 93 93 84 93 93 93 93 93 86 86 86 91 91 91 91 91 85 85 85 59 59 91 91 91 91 91 90 90 89 89 89 89 56 56 56 56 75 75 89 98 98 98 98 98 94 94 94 94 78 78 78 63 87 87 87 87 87 84 84 84 73 95 95 95 95 96 98 98 98 98 98 74 74 74 73 73 87 87 87 87 87 41 31 31 95 95 95 95 95 88 88 88 88 49 90 90 96 96 96 96 96 77 77 77 85 85 85 85 85 74 74 70 70 59 47 80 90 90 90 90 90 72 72 72 72 93 93 93 93 93 81 81 81 37 37 62 91 91 91 91 91 91 91 99 99 99 99 99 95 95 69 84 84 84 84 84 84 84 58 58 58 58 83 83 83 83 83} 735 736do_execsql_test 1.8.2.2 { 737 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 738} {0 0 0 0 0 23 23 23 2 2 2 2 2 38 38 38 38 38 39 6 6 6 6 6 27 27 27 8 8 8 8 8 29 23 16 16 16 16 16 16 7 7 7 7 7 61 24 24 24 24 12 12 12 3 3 3 3 3 15 15 15 15 15 1 1 1 1 1 16 16 16 16 16 36 36 4 4 4 4 4 30 29 29 29 2 2 2 2 2 37 37 9 9 9 9 9 13 13 13 13 1 1 1 1 1 5 5 5 5 5 11 11 8 8 8 8 8 15 15 15 15 22 22 8 8 8 8 8 11 34 34 55 55 55 44 2 2 2 2 2 7 29 29 19 19 19 19 19 26 26 26 36 36 9 9 9 9 9 33 33 33 33 9 9 9 9 9 12 12 12 12 14 33 15 15 15 15 3 3 3 3 3 30 30 30 10 10 10 10 10 21 21 21 30 30 30 27 27 17 7} 739 740do_execsql_test 1.8.3.1 { 741 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 742} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 743 744do_execsql_test 1.8.3.2 { 745 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 746} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 747 748do_execsql_test 1.8.4.1 { 749 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 750} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 751 752do_execsql_test 1.8.4.2 { 753 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 754} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 755 756do_execsql_test 1.8.4.3 { 757 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 758} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 759 760do_execsql_test 1.8.4.4 { 761 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 762} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 763 764do_execsql_test 1.8.4.5 { 765 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 766} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 767 768do_execsql_test 1.8.4.6 { 769 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 770} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 771 772do_execsql_test 1.8.5.1 { 773 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 774} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 775 776do_execsql_test 1.8.5.2 { 777 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 778} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 779 780do_execsql_test 1.8.5.3 { 781 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 782} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 783 784do_execsql_test 1.8.5.4 { 785 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 786} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 787 788do_execsql_test 1.8.5.5 { 789 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 790} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 791 792do_execsql_test 1.8.5.6 { 793 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) FROM t2 794} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 795 796do_execsql_test 1.8.6.1 { 797 SELECT 798 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ), 799 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ), 800 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) 801 FROM t2 802} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 803 804do_execsql_test 1.8.7.1 { 805 SELECT CAST( round( 100 * 806 percent_rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) 807 ) AS integer) FROM t2 808} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 809 810do_execsql_test 1.8.7.3 { 811 SELECT CAST( round( 100 * 812 percent_rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) 813 ) AS integer) FROM t2 814} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 815 816do_execsql_test 1.8.7.5 { 817 SELECT CAST( round( 100 * 818 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) 819 ) AS integer) FROM t2 820} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 821 822do_execsql_test 1.8.7.6 { 823 SELECT CAST( round( 100 * 824 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) 825 ) AS integer) FROM t2 826} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 827 828do_execsql_test 1.9.2.1 { 829 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 830} {0 74 41 74 23 99 26 33 2 89 81 96 59 38 68 39 62 91 46 6 99 97 27 46 78 54 97 8 67 29 93 84 77 23 16 16 93 65 35 47 7 86 74 61 91 85 24 85 43 59 12 32 56 3 91 22 90 55 15 28 89 25 47 1 56 40 43 56 16 75 36 89 98 76 81 4 94 42 30 78 33 29 53 63 2 87 37 80 84 72 41 9 61 73 95 65 13 58 96 98 1 21 74 65 35 5 73 11 51 87 41 12 8 20 31 31 15 95 22 73 79 88 34 8 11 49 34 90 59 96 60 55 75 77 44 2 7 85 57 74 29 70 59 19 39 26 26 47 80 90 36 58 47 9 72 72 66 33 93 75 64 81 9 23 37 13 12 14 62 91 36 91 33 15 34 36 99 3 95 69 58 52 30 50 84 10 84 33 21 39 44 58 30 38 34 83 27 82 17 7} 831 832do_execsql_test 1.9.2.2 { 833 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 834} {0 74 41 74 23 99 26 33 2 89 81 96 59 38 68 39 62 91 46 6 99 97 27 46 78 54 97 8 67 29 93 84 77 23 16 16 93 65 35 47 7 86 74 61 91 85 24 85 43 59 12 32 56 3 91 22 90 55 15 28 89 25 47 1 56 40 43 56 16 75 36 89 98 76 81 4 94 42 30 78 33 29 53 63 2 87 37 80 84 72 41 9 61 73 95 65 13 58 96 98 1 21 74 65 35 5 73 11 51 87 41 12 8 20 31 31 15 95 22 73 79 88 34 8 11 49 34 90 59 96 60 55 75 77 44 2 7 85 57 74 29 70 59 19 39 26 26 47 80 90 36 58 47 9 72 72 66 33 93 75 64 81 9 23 37 13 12 14 62 91 36 91 33 15 34 36 99 3 95 69 58 52 30 50 84 10 84 33 21 39 44 58 30 38 34 83 27 82 17 7} 835 836do_execsql_test 1.9.3.1 { 837 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 838} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 839 840do_execsql_test 1.9.3.2 { 841 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 842} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 843 844do_execsql_test 1.9.4.1 { 845 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 846} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 847 848do_execsql_test 1.9.4.2 { 849 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 850} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 851 852do_execsql_test 1.9.4.3 { 853 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 854} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 855 856do_execsql_test 1.9.4.4 { 857 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 858} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 859 860do_execsql_test 1.9.4.5 { 861 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 862} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 863 864do_execsql_test 1.9.4.6 { 865 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 866} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 867 868do_execsql_test 1.9.5.1 { 869 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 870} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 871 872do_execsql_test 1.9.5.2 { 873 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 874} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 875 876do_execsql_test 1.9.5.3 { 877 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 878} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 879 880do_execsql_test 1.9.5.4 { 881 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 882} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 883 884do_execsql_test 1.9.5.5 { 885 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 886} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 887 888do_execsql_test 1.9.5.6 { 889 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) FROM t2 890} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 891 892do_execsql_test 1.9.6.1 { 893 SELECT 894 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND CURRENT ROW ), 895 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND CURRENT ROW ), 896 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) 897 FROM t2 898} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 899 900do_execsql_test 1.9.7.1 { 901 SELECT CAST( round( 100 * 902 percent_rank() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) 903 ) AS integer) FROM t2 904} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 905 906do_execsql_test 1.9.7.3 { 907 SELECT CAST( round( 100 * 908 percent_rank() OVER ( ORDER BY b ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) 909 ) AS integer) FROM t2 910} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 911 912do_execsql_test 1.9.7.5 { 913 SELECT CAST( round( 100 * 914 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) 915 ) AS integer) FROM t2 916} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 917 918do_execsql_test 1.9.7.6 { 919 SELECT CAST( round( 100 * 920 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND CURRENT ROW ) 921 ) AS integer) FROM t2 922} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 923 924do_execsql_test 1.10.2.1 { 925 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 926} {74 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99} 927 928do_execsql_test 1.10.2.2 { 929 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 930} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} 931 932do_execsql_test 1.10.3.1 { 933 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 934} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 935 936do_execsql_test 1.10.3.2 { 937 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 938} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 939 940do_execsql_test 1.10.4.1 { 941 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 942} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 943 944do_execsql_test 1.10.4.2 { 945 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 946} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 947 948do_execsql_test 1.10.4.3 { 949 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 950} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 951 952do_execsql_test 1.10.4.4 { 953 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 954} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 955 956do_execsql_test 1.10.4.5 { 957 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 958} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 959 960do_execsql_test 1.10.4.6 { 961 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 962} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 963 964do_execsql_test 1.10.5.1 { 965 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 966} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 967 968do_execsql_test 1.10.5.2 { 969 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 970} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 971 972do_execsql_test 1.10.5.3 { 973 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 974} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 975 976do_execsql_test 1.10.5.4 { 977 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 978} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 979 980do_execsql_test 1.10.5.5 { 981 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 982} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 983 984do_execsql_test 1.10.5.6 { 985 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2 986} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 987 988do_execsql_test 1.10.6.1 { 989 SELECT 990 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ), 991 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ), 992 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) 993 FROM t2 994} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 995 996do_execsql_test 1.10.7.1 { 997 SELECT CAST( round( 100 * 998 percent_rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) 999 ) AS integer) FROM t2 1000} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 1001 1002do_execsql_test 1.10.7.3 { 1003 SELECT CAST( round( 100 * 1004 percent_rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) 1005 ) AS integer) FROM t2 1006} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 1007 1008do_execsql_test 1.10.7.5 { 1009 SELECT CAST( round( 100 * 1010 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) 1011 ) AS integer) FROM t2 1012} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 1013 1014do_execsql_test 1.10.7.6 { 1015 SELECT CAST( round( 100 * 1016 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) 1017 ) AS integer) FROM t2 1018} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 1019 1020do_execsql_test 1.11.2.1 { 1021 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1022} {74 74 74 99 99 99 99 99 99 99 96 96 96 96 96 96 91 91 99 99 99 99 99 99 99 97 97 97 97 97 97 93 93 93 93 93 93 93 93 93 93 86 91 91 91 91 91 91 91 85 85 85 91 91 91 91 91 91 91 90 90 89 89 89 89 56 56 75 75 89 98 98 98 98 98 98 98 94 94 94 94 78 78 87 87 87 87 87 87 87 84 84 95 95 95 95 96 98 98 98 98 98 98 98 74 74 74 87 87 87 87 87 87 87 41 95 95 95 95 95 95 95 88 88 88 90 90 96 96 96 96 96 96 96 77 85 85 85 85 85 85 85 74 74 70 70 80 90 90 90 90 90 90 90 72 72 93 93 93 93 93 93 93 81 81 81 62 91 91 91 91 91 91 91 99 99 99 99 99 99 99 95 95 84 84 84 84 84 84 84 84 58 58 83 83 83 83 83 83 83} 1023 1024do_execsql_test 1.11.2.2 { 1025 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1026} {0 0 0 0 0 23 2 2 2 2 2 2 2 38 38 38 38 6 6 6 6 6 6 6 27 8 8 8 8 8 8 8 16 16 16 16 16 16 7 7 7 7 7 7 7 24 24 24 12 12 12 3 3 3 3 3 3 3 15 15 15 1 1 1 1 1 1 1 16 16 16 16 16 4 4 4 4 4 4 4 29 29 2 2 2 2 2 2 2 9 9 9 9 9 9 9 13 13 1 1 1 1 1 1 1 5 5 5 5 5 8 8 8 8 8 8 8 15 15 15 15 8 8 8 8 8 8 8 11 34 34 55 44 2 2 2 2 2 2 2 7 19 19 19 19 19 19 19 26 26 26 9 9 9 9 9 9 9 33 33 9 9 9 9 9 9 9 12 12 12 12 14 15 15 15 3 3 3 3 3 3 3 30 10 10 10 10 10 10 10 21 21 21 30 27 27 17 7 7 7} 1027 1028do_execsql_test 1.11.3.1 { 1029 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1030} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1031 1032do_execsql_test 1.11.3.2 { 1033 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1034} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1035 1036do_execsql_test 1.11.4.1 { 1037 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1038} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1039 1040do_execsql_test 1.11.4.2 { 1041 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1042} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1043 1044do_execsql_test 1.11.4.3 { 1045 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1046} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 1047 1048do_execsql_test 1.11.4.4 { 1049 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1050} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 1051 1052do_execsql_test 1.11.4.5 { 1053 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1054} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 1055 1056do_execsql_test 1.11.4.6 { 1057 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1058} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 1059 1060do_execsql_test 1.11.5.1 { 1061 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1062} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1063 1064do_execsql_test 1.11.5.2 { 1065 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1066} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1067 1068do_execsql_test 1.11.5.3 { 1069 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1070} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 1071 1072do_execsql_test 1.11.5.4 { 1073 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1074} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 1075 1076do_execsql_test 1.11.5.5 { 1077 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1078} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 1079 1080do_execsql_test 1.11.5.6 { 1081 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) FROM t2 1082} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 1083 1084do_execsql_test 1.11.6.1 { 1085 SELECT 1086 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ), 1087 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ), 1088 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) 1089 FROM t2 1090} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 1091 1092do_execsql_test 1.11.7.1 { 1093 SELECT CAST( round( 100 * 1094 percent_rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) 1095 ) AS integer) FROM t2 1096} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 1097 1098do_execsql_test 1.11.7.3 { 1099 SELECT CAST( round( 100 * 1100 percent_rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) 1101 ) AS integer) FROM t2 1102} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 1103 1104do_execsql_test 1.11.7.5 { 1105 SELECT CAST( round( 100 * 1106 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) 1107 ) AS integer) FROM t2 1108} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 1109 1110do_execsql_test 1.11.7.6 { 1111 SELECT CAST( round( 100 * 1112 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING ) 1113 ) AS integer) FROM t2 1114} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 1115 1116do_execsql_test 1.12.2.1 { 1117 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1118} {74 99 99 99 99 99 89 96 96 96 96 96 68 91 91 91 99 99 99 99 99 97 97 97 97 97 97 93 93 93 93 84 93 93 93 93 93 86 86 86 91 91 91 91 91 85 85 85 59 59 91 91 91 91 91 90 90 89 89 89 89 56 56 56 56 75 75 89 98 98 98 98 98 94 94 94 94 78 78 78 63 87 87 87 87 87 84 84 84 73 95 95 95 95 96 98 98 98 98 98 74 74 74 73 73 87 87 87 87 87 41 31 31 95 95 95 95 95 88 88 88 88 49 90 90 96 96 96 96 96 77 77 77 85 85 85 85 85 74 74 70 70 59 47 80 90 90 90 90 90 72 72 72 72 93 93 93 93 93 81 81 81 37 37 62 91 91 91 91 91 91 91 99 99 99 99 99 95 95 69 84 84 84 84 84 84 84 58 58 58 58 83 83 83 83 83 82 82 17 7} 1119 1120do_execsql_test 1.12.2.2 { 1121 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1122} {0 23 23 23 2 2 2 2 2 38 38 38 38 38 39 6 6 6 6 6 27 27 27 8 8 8 8 8 29 23 16 16 16 16 16 16 7 7 7 7 7 61 24 24 24 24 12 12 12 3 3 3 3 3 15 15 15 15 15 1 1 1 1 1 16 16 16 16 16 36 36 4 4 4 4 4 30 29 29 29 2 2 2 2 2 37 37 9 9 9 9 9 13 13 13 13 1 1 1 1 1 5 5 5 5 5 11 11 8 8 8 8 8 15 15 15 15 22 22 8 8 8 8 8 11 34 34 55 55 55 44 2 2 2 2 2 7 29 29 19 19 19 19 19 26 26 26 36 36 9 9 9 9 9 33 33 33 33 9 9 9 9 9 12 12 12 12 14 33 15 15 15 15 3 3 3 3 3 30 30 30 10 10 10 10 10 21 21 21 30 30 30 27 27 17 7 7 7 7 7} 1123 1124do_execsql_test 1.12.3.1 { 1125 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1126} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1127 1128do_execsql_test 1.12.3.2 { 1129 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1130} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1131 1132do_execsql_test 1.12.4.1 { 1133 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1134} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1135 1136do_execsql_test 1.12.4.2 { 1137 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1138} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1139 1140do_execsql_test 1.12.4.3 { 1141 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1142} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 1143 1144do_execsql_test 1.12.4.4 { 1145 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1146} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 1147 1148do_execsql_test 1.12.4.5 { 1149 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1150} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 1151 1152do_execsql_test 1.12.4.6 { 1153 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1154} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 1155 1156do_execsql_test 1.12.5.1 { 1157 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1158} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1159 1160do_execsql_test 1.12.5.2 { 1161 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1162} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1163 1164do_execsql_test 1.12.5.3 { 1165 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1166} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 1167 1168do_execsql_test 1.12.5.4 { 1169 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1170} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 1171 1172do_execsql_test 1.12.5.5 { 1173 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1174} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 1175 1176do_execsql_test 1.12.5.6 { 1177 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) FROM t2 1178} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 1179 1180do_execsql_test 1.12.6.1 { 1181 SELECT 1182 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ), 1183 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ), 1184 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) 1185 FROM t2 1186} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 1187 1188do_execsql_test 1.12.7.1 { 1189 SELECT CAST( round( 100 * 1190 percent_rank() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) 1191 ) AS integer) FROM t2 1192} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 1193 1194do_execsql_test 1.12.7.3 { 1195 SELECT CAST( round( 100 * 1196 percent_rank() OVER ( ORDER BY b ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) 1197 ) AS integer) FROM t2 1198} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 1199 1200do_execsql_test 1.12.7.5 { 1201 SELECT CAST( round( 100 * 1202 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) 1203 ) AS integer) FROM t2 1204} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 1205 1206do_execsql_test 1.12.7.6 { 1207 SELECT CAST( round( 100 * 1208 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING ) 1209 ) AS integer) FROM t2 1210} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 1211 1212do_execsql_test 1.13.2.1 { 1213 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1214} {74 99 99 99 33 89 89 96 96 96 68 68 68 91 91 91 99 99 99 97 78 78 97 97 97 67 93 93 93 84 77 23 93 93 93 65 47 86 86 86 91 91 91 85 85 85 59 59 56 56 91 91 91 90 90 55 89 89 89 47 56 56 56 56 56 75 75 89 98 98 98 81 94 94 94 78 78 78 53 63 63 87 87 87 84 84 84 72 61 73 95 95 95 65 96 98 98 98 74 74 74 65 73 73 73 87 87 87 41 20 31 31 31 95 95 95 79 88 88 88 34 49 49 90 90 96 96 96 75 77 77 77 44 85 85 85 74 74 70 70 59 39 39 47 80 90 90 90 58 58 72 72 72 72 93 93 93 81 81 81 37 37 37 14 62 91 91 91 91 91 34 36 99 99 99 95 95 69 58 52 84 84 84 84 84 39 44 58 58 58 38 83 83 83 82 82 17 7 {} {}} 1215 1216do_execsql_test 1.13.2.2 { 1217 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1218} {23 23 23 26 2 2 2 81 59 38 38 38 39 39 46 6 6 6 27 27 27 46 54 8 8 8 29 29 77 23 16 16 16 16 35 35 7 7 7 61 61 61 24 24 24 43 12 12 12 3 3 3 22 22 15 15 15 25 25 1 1 1 40 40 16 16 16 36 36 76 76 4 4 4 30 30 30 29 29 29 2 2 2 37 37 72 41 9 9 9 61 65 13 13 13 58 1 1 1 21 35 5 5 5 11 11 41 12 8 8 8 20 15 15 15 22 22 73 34 8 8 8 11 34 34 59 59 55 55 55 44 2 2 2 7 57 29 29 29 19 19 19 26 26 26 47 36 36 36 9 9 9 66 33 33 33 64 64 9 9 9 13 12 12 12 14 36 36 33 15 15 15 34 3 3 3 58 52 30 30 30 10 10 10 21 21 21 39 30 30 30 34 27 27 17 7 7 7 {} {}} 1219 1220do_execsql_test 1.13.3.1 { 1221 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1222} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1223 1224do_execsql_test 1.13.3.2 { 1225 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1226} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1227 1228do_execsql_test 1.13.4.1 { 1229 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1230} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1231 1232do_execsql_test 1.13.4.2 { 1233 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1234} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1235 1236do_execsql_test 1.13.4.3 { 1237 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1238} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 1239 1240do_execsql_test 1.13.4.4 { 1241 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1242} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 1243 1244do_execsql_test 1.13.4.5 { 1245 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1246} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 1247 1248do_execsql_test 1.13.4.6 { 1249 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1250} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 1251 1252do_execsql_test 1.13.5.1 { 1253 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1254} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1255 1256do_execsql_test 1.13.5.2 { 1257 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1258} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1259 1260do_execsql_test 1.13.5.3 { 1261 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1262} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 1263 1264do_execsql_test 1.13.5.4 { 1265 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1266} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 1267 1268do_execsql_test 1.13.5.5 { 1269 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1270} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 1271 1272do_execsql_test 1.13.5.6 { 1273 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) FROM t2 1274} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 1275 1276do_execsql_test 1.13.6.1 { 1277 SELECT 1278 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ), 1279 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ), 1280 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) 1281 FROM t2 1282} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 1283 1284do_execsql_test 1.13.7.1 { 1285 SELECT CAST( round( 100 * 1286 percent_rank() OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) 1287 ) AS integer) FROM t2 1288} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 1289 1290do_execsql_test 1.13.7.3 { 1291 SELECT CAST( round( 100 * 1292 percent_rank() OVER ( ORDER BY b ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) 1293 ) AS integer) FROM t2 1294} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 1295 1296do_execsql_test 1.13.7.5 { 1297 SELECT CAST( round( 100 * 1298 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) 1299 ) AS integer) FROM t2 1300} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 1301 1302do_execsql_test 1.13.7.6 { 1303 SELECT CAST( round( 100 * 1304 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING AND 4 FOLLOWING ) 1305 ) AS integer) FROM t2 1306} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 1307 1308do_execsql_test 1.14.2.1 { 1309 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1310} {99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99} 1311 1312do_execsql_test 1.14.2.2 { 1313 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1314} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} 1315 1316do_execsql_test 1.14.3.1 { 1317 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1318} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1319 1320do_execsql_test 1.14.3.2 { 1321 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1322} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1323 1324do_execsql_test 1.14.4.1 { 1325 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1326} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1327 1328do_execsql_test 1.14.4.2 { 1329 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1330} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1331 1332do_execsql_test 1.14.4.3 { 1333 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1334} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 1335 1336do_execsql_test 1.14.4.4 { 1337 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1338} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 1339 1340do_execsql_test 1.14.4.5 { 1341 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1342} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 1343 1344do_execsql_test 1.14.4.6 { 1345 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1346} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 1347 1348do_execsql_test 1.14.5.1 { 1349 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1350} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1351 1352do_execsql_test 1.14.5.2 { 1353 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1354} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1355 1356do_execsql_test 1.14.5.3 { 1357 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1358} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 1359 1360do_execsql_test 1.14.5.4 { 1361 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1362} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 1363 1364do_execsql_test 1.14.5.5 { 1365 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1366} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 1367 1368do_execsql_test 1.14.5.6 { 1369 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1370} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 1371 1372do_execsql_test 1.14.6.1 { 1373 SELECT 1374 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ), 1375 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ), 1376 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 1377 FROM t2 1378} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 1379 1380do_execsql_test 1.14.7.1 { 1381 SELECT CAST( round( 100 * 1382 percent_rank() OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 1383 ) AS integer) FROM t2 1384} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 1385 1386do_execsql_test 1.14.7.3 { 1387 SELECT CAST( round( 100 * 1388 percent_rank() OVER ( ORDER BY b ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 1389 ) AS integer) FROM t2 1390} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 1391 1392do_execsql_test 1.14.7.5 { 1393 SELECT CAST( round( 100 * 1394 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 1395 ) AS integer) FROM t2 1396} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 1397 1398do_execsql_test 1.14.7.6 { 1399 SELECT CAST( round( 100 * 1400 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) 1401 ) AS integer) FROM t2 1402} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 1403 1404do_execsql_test 1.15.2.1 { 1405 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1406} {99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 95 95 84 84 84 84 84 84 84 84 83 83 83 83 83 83 83 83 83} 1407 1408do_execsql_test 1.15.2.2 { 1409 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1410} {0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7} 1411 1412do_execsql_test 1.15.3.1 { 1413 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1414} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1415 1416do_execsql_test 1.15.3.2 { 1417 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1418} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1419 1420do_execsql_test 1.15.4.1 { 1421 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1422} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1423 1424do_execsql_test 1.15.4.2 { 1425 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1426} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1427 1428do_execsql_test 1.15.4.3 { 1429 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1430} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 1431 1432do_execsql_test 1.15.4.4 { 1433 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1434} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 1435 1436do_execsql_test 1.15.4.5 { 1437 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1438} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 1439 1440do_execsql_test 1.15.4.6 { 1441 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1442} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 1443 1444do_execsql_test 1.15.5.1 { 1445 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1446} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1447 1448do_execsql_test 1.15.5.2 { 1449 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1450} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1451 1452do_execsql_test 1.15.5.3 { 1453 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1454} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 1455 1456do_execsql_test 1.15.5.4 { 1457 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1458} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 1459 1460do_execsql_test 1.15.5.5 { 1461 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1462} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 1463 1464do_execsql_test 1.15.5.6 { 1465 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2 1466} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 1467 1468do_execsql_test 1.15.6.1 { 1469 SELECT 1470 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ), 1471 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ), 1472 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) 1473 FROM t2 1474} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 1475 1476do_execsql_test 1.15.7.1 { 1477 SELECT CAST( round( 100 * 1478 percent_rank() OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) 1479 ) AS integer) FROM t2 1480} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 1481 1482do_execsql_test 1.15.7.3 { 1483 SELECT CAST( round( 100 * 1484 percent_rank() OVER ( ORDER BY b ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) 1485 ) AS integer) FROM t2 1486} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 1487 1488do_execsql_test 1.15.7.5 { 1489 SELECT CAST( round( 100 * 1490 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) 1491 ) AS integer) FROM t2 1492} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 1493 1494do_execsql_test 1.15.7.6 { 1495 SELECT CAST( round( 100 * 1496 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 PRECEDING AND UNBOUNDED FOLLOWING ) 1497 ) AS integer) FROM t2 1498} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 1499 1500do_execsql_test 1.16.2.1 { 1501 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1502} {99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 95 95 84 84 84 84 84 84 84 84 83 83 83 83 83 83 83 83 83 82 82 17 7} 1503 1504do_execsql_test 1.16.2.2 { 1505 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1506} {0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7} 1507 1508do_execsql_test 1.16.3.1 { 1509 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1510} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1511 1512do_execsql_test 1.16.3.2 { 1513 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1514} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1515 1516do_execsql_test 1.16.4.1 { 1517 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1518} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1519 1520do_execsql_test 1.16.4.2 { 1521 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1522} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1523 1524do_execsql_test 1.16.4.3 { 1525 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1526} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 1527 1528do_execsql_test 1.16.4.4 { 1529 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1530} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 1531 1532do_execsql_test 1.16.4.5 { 1533 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1534} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 1535 1536do_execsql_test 1.16.4.6 { 1537 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1538} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 1539 1540do_execsql_test 1.16.5.1 { 1541 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1542} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1543 1544do_execsql_test 1.16.5.2 { 1545 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1546} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1547 1548do_execsql_test 1.16.5.3 { 1549 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1550} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 1551 1552do_execsql_test 1.16.5.4 { 1553 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1554} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 1555 1556do_execsql_test 1.16.5.5 { 1557 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1558} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 1559 1560do_execsql_test 1.16.5.6 { 1561 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM t2 1562} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 1563 1564do_execsql_test 1.16.6.1 { 1565 SELECT 1566 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ), 1567 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ), 1568 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 1569 FROM t2 1570} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 1571 1572do_execsql_test 1.16.7.1 { 1573 SELECT CAST( round( 100 * 1574 percent_rank() OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 1575 ) AS integer) FROM t2 1576} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 1577 1578do_execsql_test 1.16.7.3 { 1579 SELECT CAST( round( 100 * 1580 percent_rank() OVER ( ORDER BY b ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 1581 ) AS integer) FROM t2 1582} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 1583 1584do_execsql_test 1.16.7.5 { 1585 SELECT CAST( round( 100 * 1586 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 1587 ) AS integer) FROM t2 1588} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 1589 1590do_execsql_test 1.16.7.6 { 1591 SELECT CAST( round( 100 * 1592 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) 1593 ) AS integer) FROM t2 1594} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 1595 1596do_execsql_test 1.17.2.1 { 1597 SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1598} {99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 95 95 84 84 84 84 84 84 84 84 83 83 83 83 83 83 83 83 83 82 82 17 7 {} {} {} {}} 1599 1600do_execsql_test 1.17.2.2 { 1601 SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1602} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 {} {} {} {}} 1603 1604do_execsql_test 1.17.3.1 { 1605 SELECT row_number() OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1606} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1607 1608do_execsql_test 1.17.3.2 { 1609 SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1610} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1611 1612do_execsql_test 1.17.4.1 { 1613 SELECT dense_rank() OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1614} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1615 1616do_execsql_test 1.17.4.2 { 1617 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1618} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1619 1620do_execsql_test 1.17.4.3 { 1621 SELECT dense_rank() OVER ( ORDER BY b ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1622} {1 2 2 3 3 3 4 4 5 6 7 8 8 8 9 9 9 10 10 10 11 12 12 13 13 13 14 14 15 16 16 16 17 17 17 18 19 20 21 21 22 22 23 23 23 24 25 26 26 26 27 27 28 29 29 29 30 30 30 31 31 32 33 33 33 33 33 34 34 34 34 35 35 36 36 36 36 37 37 38 38 39 39 39 40 41 41 41 42 43 43 44 44 45 45 46 46 46 46 47 48 49 50 51 52 53 53 54 54 54 55 56 56 56 56 57 57 57 57 58 59 59 60 60 61 62 63 63 63 64 65 66 67 68 69 69 69 70 70 70 71 71 71 71 71 72 72 72 73 74 74 75 75 76 77 77 78 78 78 79 80 81 81 81 81 82 82 82 83 84 84 85 86 86 86 87 87 87 88 88 88 88 88 89 89 89 90 91 91 91 92 92 92 93 93 94 94 95 95 95} 1623 1624do_execsql_test 1.17.4.4 { 1625 SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1626} {1 2 3 4 4 4 5 6 7 8 9 9 10 10 10 1 1 2 2 3 3 4 4 5 5 5 6 7 7 8 8 8 9 9 9 9 9 1 1 1 2 2 2 3 3 4 5 6 7 7 8 8 8 9 1 1 2 2 3 3 3 4 4 4 4 4 5 5 6 7 8 8 8 9 10 10 10 1 2 3 4 4 4 4 5 5 6 7 8 8 8 8 8 9 9 9 9 10 1 2 2 2 3 4 4 5 5 6 6 6 7 7 7 8 8 8 9 9 9 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6 7 8 9 10 10 10 1 1 1 2 3 3 4 4 5 5 5 5 6 7 8 8 9 9 10 10 1 1 1 2 3 3 4 4 4 4 5 6 6 7 8 8 1 1 1 2 3 3 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 10 10} 1627 1628do_execsql_test 1.17.4.5 { 1629 SELECT dense_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1630} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10} 1631 1632do_execsql_test 1.17.4.6 { 1633 SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1634} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5} 1635 1636do_execsql_test 1.17.5.1 { 1637 SELECT rank() OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1638} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200} 1639 1640do_execsql_test 1.17.5.2 { 1641 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1642} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23} 1643 1644do_execsql_test 1.17.5.3 { 1645 SELECT rank() OVER ( ORDER BY b ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1646} {1 2 2 4 4 4 7 7 9 10 11 12 12 12 15 15 15 18 18 18 21 22 22 24 24 24 27 27 29 30 30 30 33 33 33 36 37 38 39 39 41 41 43 43 43 46 47 48 48 48 51 51 53 54 54 54 57 57 57 60 60 62 63 63 63 63 63 68 68 68 68 72 72 74 74 74 74 78 78 80 80 82 82 82 85 86 86 86 89 90 90 92 92 94 94 96 96 96 96 100 101 102 103 104 105 106 106 108 108 108 111 112 112 112 112 116 116 116 116 120 121 121 123 123 125 126 127 127 127 130 131 132 133 134 135 135 135 138 138 138 141 141 141 141 141 146 146 146 149 150 150 152 152 154 155 155 157 157 157 160 161 162 162 162 162 166 166 166 169 170 170 172 173 173 173 176 176 176 179 179 179 179 179 184 184 184 187 188 188 188 191 191 191 194 194 196 196 198 198 198} 1647 1648do_execsql_test 1.17.5.4 { 1649 SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1650} {1 2 3 4 4 4 7 8 9 10 11 11 13 13 13 1 1 3 3 5 5 7 7 9 9 9 12 13 13 15 15 15 18 18 18 18 18 1 1 1 4 4 4 7 7 9 10 11 12 12 14 14 14 17 1 1 3 3 5 5 5 8 8 8 8 8 13 13 15 16 17 17 17 20 21 21 21 1 2 3 4 4 4 4 8 8 10 11 12 12 12 12 12 17 17 17 17 21 1 2 2 2 5 6 6 8 8 10 10 10 13 13 13 16 16 16 19 19 19 1 2 2 2 5 5 5 8 8 8 8 12 12 14 14 14 17 18 19 20 20 20 1 1 1 4 5 5 7 7 9 9 9 9 13 14 15 15 17 17 19 19 1 1 1 4 5 5 7 7 7 7 11 12 12 14 15 15 1 1 1 4 5 5 5 8 8 8 11 12 12 12 12 16 17 18 18 18 21 21 21} 1651 1652do_execsql_test 1.17.5.5 { 1653 SELECT rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1654} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 120 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 142 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178 178} 1655 1656do_execsql_test 1.17.5.6 { 1657 SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM t2 1658} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87 87} 1659 1660do_execsql_test 1.17.6.1 { 1661 SELECT 1662 row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ), 1663 rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ), 1664 dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) 1665 FROM t2 1666} {1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 16 2 17 16 2 18 16 2 19 16 2 20 16 2 21 16 2 22 16 2 23 16 2 24 16 2 25 16 2 26 16 2 27 16 2 28 16 2 29 16 2 30 16 2 31 16 2 32 16 2 33 33 3 34 33 3 35 33 3 36 33 3 37 33 3 38 33 3 39 33 3 40 33 3 41 33 3 42 33 3 43 33 3 44 33 3 45 33 3 46 33 3 47 33 3 48 33 3 49 33 3 50 33 3 51 33 3 52 33 3 53 33 3 54 54 4 55 54 4 56 54 4 57 54 4 58 54 4 59 54 4 60 54 4 61 54 4 62 54 4 63 54 4 64 54 4 65 54 4 66 54 4 67 54 4 68 54 4 69 54 4 70 54 4 71 54 4 72 54 4 73 54 4 74 54 4 75 54 4 76 76 5 77 76 5 78 76 5 79 76 5 80 76 5 81 76 5 82 76 5 83 76 5 84 76 5 85 76 5 86 76 5 87 76 5 88 76 5 89 76 5 90 76 5 91 76 5 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 23 2 24 23 2 25 23 2 26 23 2 27 23 2 28 23 2 29 23 2 30 23 2 31 23 2 32 23 2 33 23 2 34 23 2 35 23 2 36 23 2 37 23 2 38 23 2 39 23 2 40 23 2 41 23 2 42 23 2 43 23 2 44 23 2 45 23 2 46 46 3 47 46 3 48 46 3 49 46 3 50 46 3 51 46 3 52 46 3 53 46 3 54 46 3 55 46 3 56 46 3 57 46 3 58 46 3 59 46 3 60 46 3 61 46 3 62 46 3 63 46 3 64 46 3 65 46 3 66 46 3 67 67 4 68 67 4 69 67 4 70 67 4 71 67 4 72 67 4 73 67 4 74 67 4 75 67 4 76 67 4 77 67 4 78 67 4 79 67 4 80 67 4 81 67 4 82 67 4 83 67 4 84 67 4 85 67 4 86 67 4 87 87 5 88 87 5 89 87 5 90 87 5 91 87 5 92 87 5 93 87 5 94 87 5 95 87 5 96 87 5 97 87 5 98 87 5 99 87 5 100 87 5 101 87 5 102 87 5 103 87 5 104 87 5 105 87 5 106 87 5 107 87 5 108 87 5 109 87 5} 1667 1668do_execsql_test 1.17.7.1 { 1669 SELECT CAST( round( 100 * 1670 percent_rank() OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) 1671 ) AS integer) FROM t2 1672} {0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 68 68 69 69 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 78 78 79 79 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 88 88 89 89 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 98 98 99 99 100} 1673 1674do_execsql_test 1.17.7.3 { 1675 SELECT CAST( round( 100 * 1676 percent_rank() OVER ( ORDER BY b ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) 1677 ) AS integer) FROM t2 1678} {0 1 1 2 2 2 3 3 4 5 5 6 6 6 7 7 7 9 9 9 10 11 11 12 12 12 13 13 14 15 15 15 16 16 16 18 18 19 19 19 20 20 21 21 21 23 23 24 24 24 25 25 26 27 27 27 28 28 28 30 30 31 31 31 31 31 31 34 34 34 34 36 36 37 37 37 37 39 39 40 40 41 41 41 42 43 43 43 44 45 45 46 46 47 47 48 48 48 48 50 50 51 51 52 52 53 53 54 54 54 55 56 56 56 56 58 58 58 58 60 60 60 61 61 62 63 63 63 63 65 65 66 66 67 67 67 67 69 69 69 70 70 70 70 70 73 73 73 74 75 75 76 76 77 77 77 78 78 78 80 80 81 81 81 81 83 83 83 84 85 85 86 86 86 86 88 88 88 89 89 89 89 89 92 92 92 93 94 94 94 95 95 95 97 97 98 98 99 99 99} 1679 1680do_execsql_test 1.17.7.5 { 1681 SELECT CAST( round( 100 * 1682 percent_rank() OVER ( ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) 1683 ) AS integer) FROM t2 1684} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89 89} 1685 1686do_execsql_test 1.17.7.6 { 1687 SELECT CAST( round( 100 * 1688 percent_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING AND UNBOUNDED FOLLOWING ) 1689 ) AS integer) FROM t2 1690} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80} 1691 1692finish_test 1693