github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/windowA.test (about)

     1  # 2019-08-30
     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  # Test cases for RANGE BETWEEN and especially with NULLS LAST
    12  #
    13  
    14  set testdir [file dirname $argv0]
    15  source $testdir/tester.tcl
    16  set testprefix windowA
    17  
    18  ifcapable !windowfunc {
    19    finish_test
    20    return
    21  }
    22  
    23  do_execsql_test 1.0 {
    24    CREATE TABLE t1(a INTEGER PRIMARY KEY, b CHAR(1), d FLOAT);
    25    INSERT INTO t1 VALUES
    26     (1, 'A', 5.4),
    27     (2, 'B', 5.55),
    28     (3, 'C', 8.0),
    29     (4, 'D', 10.25),
    30     (5, 'E', 10.26),
    31     (6, 'N', NULL),
    32     (7, 'N', NULL);
    33  } {}
    34  
    35  do_execsql_test 1.1 {
    36    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
    37    WINDOW w1 AS 
    38       (ORDER BY d DESC NULLS LAST
    39        RANGE BETWEEN 2.50 PRECEDING AND 2.25 FOLLOWING)
    40    ORDER BY +d DESC NULLS LAST, +a;
    41  } [list \
    42    5 E 10.26 ED   \
    43    4 D 10.25 EDC  \
    44    3 C   8.0 EDC  \
    45    2 B  5.55 CBA  \
    46    1 A   5.4 BA   \
    47    6 N  NULL NN   \
    48    7 N  NULL NN   \
    49  ]
    50  
    51  do_execsql_test 1.2 {
    52    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
    53    WINDOW w1 AS 
    54       (ORDER BY d DESC NULLS FIRST
    55        RANGE BETWEEN 2.50 PRECEDING AND 2.25 FOLLOWING)
    56    ORDER BY +d DESC NULLS FIRST, +a;
    57  } [list \
    58    6 N  NULL NN   \
    59    7 N  NULL NN   \
    60    5 E 10.26 ED   \
    61    4 D 10.25 EDC  \
    62    3 C   8.0 EDC  \
    63    2 B  5.55 CBA  \
    64    1 A   5.4 BA   \
    65  ]
    66  
    67  do_execsql_test 1.3 {
    68    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
    69    WINDOW w1 AS 
    70       (ORDER BY d DESC NULLS LAST
    71        RANGE BETWEEN 2.50 PRECEDING AND UNBOUNDED FOLLOWING)
    72    ORDER BY +d DESC NULLS LAST, +a;
    73  } [list \
    74    5 E 10.26 EDCBANN  \
    75    4 D 10.25 EDCBANN  \
    76    3 C   8.0 EDCBANN  \
    77    2 B  5.55 CBANN    \
    78    1 A   5.4 BANN     \
    79    6 N  NULL NN       \
    80    7 N  NULL NN       \
    81  ]
    82  
    83  do_execsql_test 1.4 {
    84    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
    85    WINDOW w1 AS 
    86       (ORDER BY d DESC NULLS FIRST
    87        RANGE BETWEEN 2.50 PRECEDING AND UNBOUNDED FOLLOWING)
    88    ORDER BY +d DESC NULLS FIRST, +a;
    89  } [list \
    90    6 N  NULL NNEDCBA  \
    91    7 N  NULL NNEDCBA  \
    92    5 E 10.26 EDCBA    \
    93    4 D 10.25 EDCBA    \
    94    3 C   8.0 EDCBA    \
    95    2 B  5.55 CBA      \
    96    1 A   5.4 BA       \
    97  ]
    98  
    99  do_execsql_test 1.5 {
   100    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   101    WINDOW w1 AS 
   102       (ORDER BY d DESC NULLS LAST
   103        RANGE BETWEEN 2.50 PRECEDING AND CURRENT ROW)
   104    ORDER BY +d DESC NULLS LAST, +a;
   105  } [list \
   106    5 E 10.26 E    \
   107    4 D 10.25 ED   \
   108    3 C   8.0 EDC  \
   109    2 B  5.55 CB   \
   110    1 A   5.4 BA   \
   111    6 N  NULL NN   \
   112    7 N  NULL NN   \
   113  ]
   114  
   115  do_execsql_test 1.6 {
   116    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   117    WINDOW w1 AS 
   118       (ORDER BY d DESC NULLS FIRST
   119        RANGE BETWEEN 2.50 PRECEDING AND CURRENT ROW)
   120    ORDER BY +d DESC NULLS FIRST, +a;
   121  } [list \
   122    6 N  NULL NN   \
   123    7 N  NULL NN   \
   124    5 E 10.26 E    \
   125    4 D 10.25 ED   \
   126    3 C   8.0 EDC  \
   127    2 B  5.55 CB   \
   128    1 A   5.4 BA   \
   129  ]
   130  
   131  do_execsql_test 2.1 {
   132    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   133    WINDOW w1 AS 
   134       (ORDER BY d DESC NULLS LAST
   135        RANGE BETWEEN UNBOUNDED PRECEDING AND 2.25 FOLLOWING)
   136    ORDER BY +d DESC NULLS LAST, +a;
   137  } [list \
   138    5 E 10.26 ED       \
   139    4 D 10.25 EDC      \
   140    3 C   8.0 EDC      \
   141    2 B  5.55 EDCBA    \
   142    1 A   5.4 EDCBA    \
   143    6 N  NULL EDCBANN  \
   144    7 N  NULL EDCBANN  \
   145  ]
   146  
   147  do_execsql_test 2.2 {
   148    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   149    WINDOW w1 AS 
   150       (ORDER BY d DESC NULLS FIRST
   151        RANGE BETWEEN UNBOUNDED PRECEDING AND 2.25 FOLLOWING)
   152    ORDER BY +d DESC NULLS FIRST, +a;
   153  } [list \
   154    6 N  NULL NN         \
   155    7 N  NULL NN         \
   156    5 E 10.26 NNED       \
   157    4 D 10.25 NNEDC      \
   158    3 C   8.0 NNEDC      \
   159    2 B  5.55 NNEDCBA    \
   160    1 A   5.4 NNEDCBA    \
   161  ]
   162  
   163  do_execsql_test 2.3 {
   164    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   165    WINDOW w1 AS 
   166       (ORDER BY d DESC NULLS LAST
   167        RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
   168    ORDER BY +d DESC NULLS LAST, +a;
   169  } [list \
   170    5 E 10.26 EDCBANN  \
   171    4 D 10.25 EDCBANN  \
   172    3 C   8.0 EDCBANN  \
   173    2 B  5.55 EDCBANN  \
   174    1 A   5.4 EDCBANN  \
   175    6 N  NULL EDCBANN  \
   176    7 N  NULL EDCBANN  \
   177  ]
   178  
   179  do_execsql_test 2.4 {
   180    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   181    WINDOW w1 AS 
   182       (ORDER BY d DESC NULLS FIRST
   183        RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
   184    ORDER BY +d DESC NULLS FIRST, +a;
   185  } [list \
   186    6 N  NULL NNEDCBA  \
   187    7 N  NULL NNEDCBA  \
   188    5 E 10.26 NNEDCBA  \
   189    4 D 10.25 NNEDCBA  \
   190    3 C   8.0 NNEDCBA  \
   191    2 B  5.55 NNEDCBA  \
   192    1 A   5.4 NNEDCBA  \
   193  ]
   194  
   195  do_execsql_test 2.5 {
   196    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   197    WINDOW w1 AS 
   198       (ORDER BY d DESC NULLS LAST
   199        RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
   200    ORDER BY +d DESC NULLS LAST, +a;
   201  } [list \
   202    5 E 10.26 E        \
   203    4 D 10.25 ED       \
   204    3 C   8.0 EDC      \
   205    2 B  5.55 EDCB     \
   206    1 A   5.4 EDCBA    \
   207    6 N  NULL EDCBANN  \
   208    7 N  NULL EDCBANN  \
   209  ]
   210  
   211  do_execsql_test 2.6 {
   212    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   213    WINDOW w1 AS 
   214       (ORDER BY d DESC NULLS FIRST
   215        RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
   216    ORDER BY +d DESC NULLS FIRST, +a;
   217  } [list \
   218    6 N  NULL NN       \
   219    7 N  NULL NN       \
   220    5 E 10.26 NNE      \
   221    4 D 10.25 NNED     \
   222    3 C   8.0 NNEDC    \
   223    2 B  5.55 NNEDCB   \
   224    1 A   5.4 NNEDCBA  \
   225  ]
   226  
   227  
   228  do_execsql_test 3.1 {
   229    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   230    WINDOW w1 AS 
   231       (ORDER BY d DESC NULLS LAST
   232        RANGE BETWEEN CURRENT ROW AND 2.25 FOLLOWING)
   233    ORDER BY +d DESC NULLS LAST, +a;
   234  } [list \
   235    5 E 10.26 ED       \
   236    4 D 10.25 DC       \
   237    3 C   8.0 C        \
   238    2 B  5.55 BA       \
   239    1 A   5.4 A        \
   240    6 N  NULL NN       \
   241    7 N  NULL NN       \
   242  ]
   243  
   244  do_execsql_test 3.2 {
   245    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   246    WINDOW w1 AS 
   247       (ORDER BY d DESC NULLS FIRST
   248        RANGE BETWEEN CURRENT ROW AND 2.25 FOLLOWING)
   249    ORDER BY +d DESC NULLS FIRST, +a;
   250  } [list \
   251    6 N  NULL NN       \
   252    7 N  NULL NN       \
   253    5 E 10.26 ED       \
   254    4 D 10.25 DC       \
   255    3 C   8.0 C        \
   256    2 B  5.55 BA       \
   257    1 A   5.4 A        \
   258  ]
   259  
   260  do_execsql_test 3.3 {
   261    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   262    WINDOW w1 AS 
   263       (ORDER BY d DESC NULLS LAST
   264        RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
   265    ORDER BY +d DESC NULLS LAST, +a;
   266  } [list \
   267    5 E 10.26 EDCBANN  \
   268    4 D 10.25 DCBANN   \
   269    3 C   8.0 CBANN    \
   270    2 B  5.55 BANN     \
   271    1 A   5.4 ANN      \
   272    6 N  NULL NN       \
   273    7 N  NULL NN       \
   274  ]
   275  
   276  do_execsql_test 3.4 {
   277    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   278    WINDOW w1 AS 
   279       (ORDER BY d DESC NULLS FIRST
   280        RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
   281    ORDER BY +d DESC NULLS FIRST, +a;
   282  } [list \
   283    6 N  NULL NNEDCBA  \
   284    7 N  NULL NNEDCBA  \
   285    5 E 10.26 EDCBA    \
   286    4 D 10.25 DCBA     \
   287    3 C   8.0 CBA      \
   288    2 B  5.55 BA       \
   289    1 A   5.4 A        \
   290  ]
   291  
   292  do_execsql_test 4.0 {
   293    SELECT a, b, quote(d), group_concat(b,'') OVER w1 FROM t1
   294    WINDOW w1 AS 
   295       (ORDER BY d DESC NULLS FIRST
   296        RANGE BETWEEN 2.50 PRECEDING AND 0.5 PRECEDING)
   297    ORDER BY +d DESC NULLS FIRST, +a;
   298  } [list \
   299    6 N  NULL NN  \
   300    7 N  NULL NN  \
   301    5 E 10.26 {}  \
   302    4 D 10.25 {}  \
   303    3 C   8.0 ED  \
   304    2 B  5.55 C   \
   305    1 A   5.4 {}  \
   306  ]
   307  
   308  
   309  finish_test