/ Check-in [2493ce1a]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add implementation of last_value() window function.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | exp-window-functions
Files: files | file ages | folders
SHA3-256: 2493ce1a402888f6a8f25e03052c25a4e9bca740639e98cb614f5e5160ac25d3
User & Date: dan 2018-06-05 16:16:17
Context
2018-06-06
20:51
Add implementation of nth_value() window function. check-in: eb1fb420 user: dan tags: exp-window-functions
2018-06-05
16:16
Add implementation of last_value() window function. check-in: 2493ce1a user: dan tags: exp-window-functions
2018-06-04
18:55
Add implementation of window function ntile(). check-in: 3f093f60 user: dan tags: exp-window-functions
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to src/window.c.

   187    187   };
   188    188   
   189    189   /*
   190    190   ** Implementation of ntile(). This assumes that the window frame has
   191    191   ** been coerced to:
   192    192   **
   193    193   **   ROWS UNBOUNDED PRECEDING AND CURRENT ROW
   194         -**
   195    194   */
   196    195   static void ntileStepFunc(
   197    196     sqlite3_context *pCtx, 
   198    197     int nArg,
   199    198     sqlite3_value **apArg
   200    199   ){
   201    200     struct NtileCtx *p;
................................................................................
   238    237           sqlite3_result_int64(pCtx, 1 + iRow/(nSize+1));
   239    238         }else{
   240    239           sqlite3_result_int64(pCtx, 1 + nLarge + (iRow-iSmall)/nSize);
   241    240         }
   242    241       }
   243    242     }
   244    243   }
          244  +
          245  +struct LastValueCtx {
          246  +  sqlite3_value *pVal;
          247  +  int nVal;
          248  +};
          249  +
          250  +/*
          251  +** Implementation of last_value().
          252  +*/
          253  +static void last_valueStepFunc(
          254  +  sqlite3_context *pCtx, 
          255  +  int nArg,
          256  +  sqlite3_value **apArg
          257  +){
          258  +  struct LastValueCtx *p;
          259  +  p = (struct LastValueCtx *)sqlite3_aggregate_context(pCtx, sizeof(*p));
          260  +  if( p ){
          261  +    sqlite3_value_free(p->pVal);
          262  +    p->pVal = sqlite3_value_dup(apArg[0]);
          263  +    p->nVal++;
          264  +  }
          265  +}
          266  +static void last_valueInverseFunc(
          267  +  sqlite3_context *pCtx, 
          268  +  int nArg,
          269  +  sqlite3_value **apArg
          270  +){
          271  +  struct LastValueCtx *p;
          272  +  p = (struct LastValueCtx *)sqlite3_aggregate_context(pCtx, sizeof(*p));
          273  +  if( p ){
          274  +    p->nVal--;
          275  +    if( p->nVal==0 ){
          276  +      sqlite3_value_free(p->pVal);
          277  +      p->pVal = 0;
          278  +    }
          279  +  }
          280  +}
          281  +static void last_valueValueFunc(sqlite3_context *pCtx){
          282  +  struct LastValueCtx *p;
          283  +  p = (struct LastValueCtx *)sqlite3_aggregate_context(pCtx, sizeof(*p));
          284  +  if( p && p->pVal ){
          285  +    sqlite3_result_value(pCtx, p->pVal);
          286  +  }
          287  +}
          288  +static void last_valueFinalizeFunc(sqlite3_context *pCtx){
          289  +  struct LastValueCtx *p;
          290  +  p = (struct LastValueCtx *)sqlite3_aggregate_context(pCtx, sizeof(*p));
          291  +  if( p && p->pVal ){
          292  +    sqlite3_result_value(pCtx, p->pVal);
          293  +    sqlite3_value_free(p->pVal);
          294  +    p->pVal = 0;
          295  +  }
          296  +}
   245    297   
   246    298   static void nth_valueStepFunc(
   247    299     sqlite3_context *pCtx, 
   248    300     int nArg,
   249    301     sqlite3_value **apArg
   250    302   ){
   251    303   }
................................................................................
   259    311   }
   260    312   
   261    313   #define WINDOWFUNC(name,nArg,extra) {                                      \
   262    314     nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0,                      \
   263    315     name ## StepFunc, name ## ValueFunc, name ## ValueFunc,                  \
   264    316     name ## InverseFunc, #name                                               \
   265    317   }
          318  +
          319  +#define WINDOWFUNCF(name,nArg,extra) {                                     \
          320  +  nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0,                      \
          321  +  name ## StepFunc, name ## FinalizeFunc, name ## ValueFunc,               \
          322  +  name ## InverseFunc, #name                                               \
          323  +}
   266    324   
   267    325   /*
   268    326   ** Register those built-in window functions that are not also aggregates.
   269    327   */
   270    328   void sqlite3WindowFunctions(void){
   271    329     static FuncDef aWindowFuncs[] = {
   272    330       WINDOWFUNC(row_number, 0, 0),
   273    331       WINDOWFUNC(dense_rank, 0, 0),
   274    332       WINDOWFUNC(rank, 0, 0),
   275    333       WINDOWFUNC(percent_rank, 0, SQLITE_FUNC_WINDOW_SIZE),
   276    334       WINDOWFUNC(cume_dist, 0, SQLITE_FUNC_WINDOW_SIZE),
   277    335       WINDOWFUNC(ntile, 1, SQLITE_FUNC_WINDOW_SIZE),
          336  +    WINDOWFUNCF(last_value, 1, 0),
   278    337       WINDOWFUNC(nth_value, 2, 0),
   279    338     };
   280    339     sqlite3InsertBuiltinFuncs(aWindowFuncs, ArraySize(aWindowFuncs));
   281    340   }
   282    341   
   283    342   void sqlite3WindowUpdate(Parse *pParse, Window *pWin, FuncDef *pFunc){
   284    343     if( pFunc->funcFlags & SQLITE_FUNC_WINDOW ){

Changes to test/window3.tcl.

   181    181     "
   182    182     execsql_float_test 1.$tn.8.5 "
   183    183       SELECT ntile(104) OVER ( ORDER BY b%10,a $window ) FROM t2
   184    184     "
   185    185     execsql_float_test 1.$tn.8.6 "
   186    186       SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
   187    187     "
          188  +
          189  +  execsql_test 1.$tn.9.1 "
          190  +    SELECT last_value(a+b) OVER ( ORDER BY a $window ) FROM t2
          191  +  "
          192  +  execsql_test 1.$tn.9.2 "
          193  +    SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a $window ) FROM t2
          194  +  "
          195  +  execsql_test 1.$tn.9.3 "
          196  +    SELECT last_value(a+b) OVER ( ORDER BY b,a $window ) FROM t2
          197  +  "
          198  +  execsql_test 1.$tn.9.4 "
          199  +    SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
          200  +  "
          201  +  execsql_test 1.$tn.9.5 "
          202  +    SELECT last_value(a+b) OVER ( ORDER BY b%10,a $window ) FROM t2
          203  +  "
          204  +  execsql_test 1.$tn.9.6 "
          205  +    SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
          206  +  "
   188    207   
   189    208   }
   190    209   
   191    210   finish_test
   192    211   

Changes to test/window3.test.

   269    269     set myres {}
   270    270     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2}] {
   271    271       lappend myres [format %.2f [set r]]
   272    272     }
   273    273     set myres
   274    274   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
   275    275   
          276  +do_execsql_test 1.1.9.1 {
          277  +  SELECT last_value(a+b) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
          278  +} {1   76   44   78   28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280   216   207}
          279  +
          280  +do_execsql_test 1.1.9.2 {
          281  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
          282  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
          283  +
          284  +do_execsql_test 1.1.9.3 {
          285  +  SELECT last_value(a+b) OVER ( ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
          286  +} {1   65   102   11   87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105   120   276}
          287  +
          288  +do_execsql_test 1.1.9.4 {
          289  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
          290  +} {1   196   134   109   213   223   106   234   191   212   168   229   147   218   240   65   102   119   136   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   261   263   11   87   138   63   124   179   78   141   84   120   234   79   231   162   227   228   280   57   181   110   179   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   130   252   80   182   71   157   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   271   171   111   74   132   189   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   213   274   26   51   52   85   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   195   226   48   144   207   216   50   224   124   202   87   110   195   200   196   96   110   211   173   197   119   124   36   121   132   88   52   232   156   210   239   250   83   103   158   210   171   198   101   163   172   163   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105   120   276}
          291  +
          292  +do_execsql_test 1.1.9.5 {
          293  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
          294  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
          295  +
          296  +do_execsql_test 1.1.9.6 {
          297  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
          298  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
          299  +
   276    300   do_execsql_test 1.2.2.1 {
   277    301     SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
   278    302   } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99}
   279    303   
   280    304   do_execsql_test 1.2.2.2 {
   281    305     SELECT min(b) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
   282    306   } {0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0}
................................................................................
   485    509     set myres {}
   486    510     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2}] {
   487    511       lappend myres [format %.2f [set r]]
   488    512     }
   489    513     set myres
   490    514   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
   491    515   
          516  +do_execsql_test 1.2.9.1 {
          517  +  SELECT last_value(a+b) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
          518  +} {207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207}
          519  +
          520  +do_execsql_test 1.2.9.2 {
          521  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
          522  +} {223   223   223   223   223   223   223   223   223   223   223   223   223   223   223   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
          523  +
          524  +do_execsql_test 1.2.9.3 {
          525  +  SELECT last_value(a+b) OVER ( ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
          526  +} {276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
          527  +
          528  +do_execsql_test 1.2.9.4 {
          529  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
          530  +} {240   240   240   240   240   240   240   240   240   240   240   240   240   240   240   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
          531  +
          532  +do_execsql_test 1.2.9.5 {
          533  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
          534  +} {229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
          535  +
          536  +do_execsql_test 1.2.9.6 {
          537  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
          538  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
          539  +
   492    540   do_execsql_test 1.3.2.1 {
   493    541     SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
   494    542   } {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}
   495    543   
   496    544   do_execsql_test 1.3.2.2 {
   497    545     SELECT min(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
   498    546   } {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}
................................................................................
   701    749     set myres {}
   702    750     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2}] {
   703    751       lappend myres [format %.2f [set r]]
   704    752     }
   705    753     set myres
   706    754   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
   707    755   
          756  +do_execsql_test 1.3.9.1 {
          757  +  SELECT last_value(a+b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
          758  +} {1   76   44   78   28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280   216   207}
          759  +
          760  +do_execsql_test 1.3.9.2 {
          761  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
          762  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
          763  +
          764  +do_execsql_test 1.3.9.3 {
          765  +  SELECT last_value(a+b) OVER ( ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
          766  +} {1   65   102   11   87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105   120   276}
          767  +
          768  +do_execsql_test 1.3.9.4 {
          769  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
          770  +} {1   196   134   109   213   223   106   234   191   212   168   229   147   218   240   65   102   119   136   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   261   263   11   87   138   63   124   179   78   141   84   120   234   79   231   162   227   228   280   57   181   110   179   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   130   252   80   182   71   157   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   271   171   111   74   132   189   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   213   274   26   51   52   85   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   195   226   48   144   207   216   50   224   124   202   87   110   195   200   196   96   110   211   173   197   119   124   36   121   132   88   52   232   156   210   239   250   83   103   158   210   171   198   101   163   172   163   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105   120   276}
          771  +
          772  +do_execsql_test 1.3.9.5 {
          773  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
          774  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
          775  +
          776  +do_execsql_test 1.3.9.6 {
          777  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
          778  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
          779  +
   708    780   do_execsql_test 1.4.2.1 {
   709    781     SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
   710    782   } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   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}
   711    783   
   712    784   do_execsql_test 1.4.2.2 {
   713    785     SELECT min(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
   714    786   } {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}
................................................................................
   917    989     set myres {}
   918    990     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2}] {
   919    991       lappend myres [format %.2f [set r]]
   920    992     }
   921    993     set myres
   922    994   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
   923    995   
          996  +do_execsql_test 1.4.9.1 {
          997  +  SELECT last_value(a+b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
          998  +} {207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207}
          999  +
         1000  +do_execsql_test 1.4.9.2 {
         1001  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
         1002  +} {223   223   223   223   223   223   223   223   223   223   223   223   223   223   223   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
         1003  +
         1004  +do_execsql_test 1.4.9.3 {
         1005  +  SELECT last_value(a+b) OVER ( ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
         1006  +} {276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
         1007  +
         1008  +do_execsql_test 1.4.9.4 {
         1009  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
         1010  +} {240   240   240   240   240   240   240   240   240   240   240   240   240   240   240   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
         1011  +
         1012  +do_execsql_test 1.4.9.5 {
         1013  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
         1014  +} {229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
         1015  +
         1016  +do_execsql_test 1.4.9.6 {
         1017  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
         1018  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         1019  +
   924   1020   do_execsql_test 1.5.2.1 {
   925   1021     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
   926   1022   } {{}   {}   {}   {}   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}
   927   1023   
   928   1024   do_execsql_test 1.5.2.2 {
   929   1025     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
   930   1026   } {{}   {}   {}   {}   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0}
................................................................................
  1133   1229     set myres {}
  1134   1230     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING) FROM t2}] {
  1135   1231       lappend myres [format %.2f [set r]]
  1136   1232     }
  1137   1233     set myres
  1138   1234   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  1139   1235   
         1236  +do_execsql_test 1.5.9.1 {
         1237  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
         1238  +} {{}   {}   {}   {}   1   76   44   78   28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279}
         1239  +
         1240  +do_execsql_test 1.5.9.2 {
         1241  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
         1242  +} {{}   {}   {}   {}   1   147   106   109   168   134   218   191   212   229   240   {}   {}   {}   {}   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   {}   {}   {}   {}   11   79   63   84   78   120   87   162   124   141   138   227   228   {}   {}   {}   {}   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   {}   {}   {}   {}   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   {}   {}   {}   {}   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   {}   {}   {}   {}   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   {}   {}   {}   {}   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   {}   {}   {}   {}   52   83   103   36   88   171   158   156   198   121   210   132   {}   {}   {}   {}   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163}
         1243  +
         1244  +do_execsql_test 1.5.9.3 {
         1245  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
         1246  +} {{}   {}   {}   {}   1   65   102   11   87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171}
         1247  +
         1248  +do_execsql_test 1.5.9.4 {
         1249  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
         1250  +} {{}   {}   {}   {}   1   196   134   109   213   223   106   234   191   212   168   {}   {}   {}   {}   65   102   119   136   123   210   146   147   44   132   152   160   105   154   92   156   243   109   {}   {}   {}   {}   11   87   138   63   124   179   78   141   84   120   234   79   231   {}   {}   {}   {}   57   181   110   179   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   {}   {}   {}   {}   80   182   71   157   161   209   229   179   235   80   225   76   78   117   177   214   116   {}   {}   {}   {}   111   74   132   189   87   74   140   113   187   103   161   169   145   208   235   131   133   {}   {}   {}   {}   26   51   52   85   33   172   173   107   187   207   212   65   70   109   121   124   223   150   {}   {}   {}   {}   48   144   207   216   50   224   124   202   87   110   195   200   196   96   110   211   {}   {}   {}   {}   36   121   132   88   52   232   156   210   239   250   83   103   {}   {}   {}   {}   101   163   172   163   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150}
         1251  +
         1252  +do_execsql_test 1.5.9.5 {
         1253  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
         1254  +} {{}   {}   {}   {}   1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163}
         1255  +
         1256  +do_execsql_test 1.5.9.6 {
         1257  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING) FROM t2
         1258  +} {{}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
         1259  +
  1140   1260   do_execsql_test 1.6.2.1 {
  1141   1261     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
  1142   1262   } {{}   {}   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}
  1143   1263   
  1144   1264   do_execsql_test 1.6.2.2 {
  1145   1265     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
  1146   1266   } {{}   {}   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}
................................................................................
  1349   1469     set myres {}
  1350   1470     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING) FROM t2}] {
  1351   1471       lappend myres [format %.2f [set r]]
  1352   1472     }
  1353   1473     set myres
  1354   1474   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  1355   1475   
         1476  +do_execsql_test 1.6.9.1 {
         1477  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
         1478  +} {{}   {}   1   76   44   78   28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280}
         1479  +
         1480  +do_execsql_test 1.6.9.2 {
         1481  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
         1482  +} {{}   {}   1   147   106   109   168   134   218   191   212   229   240   213   234   {}   {}   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   {}   {}   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   {}   {}   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   {}   {}   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   {}   {}   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   {}   {}   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   {}   {}   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   {}   {}   52   83   103   36   88   171   158   156   198   121   210   132   210   239   {}   {}   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276}
         1483  +
         1484  +do_execsql_test 1.6.9.3 {
         1485  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
         1486  +} {{}   {}   1   65   102   11   87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105}
         1487  +
         1488  +do_execsql_test 1.6.9.4 {
         1489  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
         1490  +} {{}   {}   1   196   134   109   213   223   106   234   191   212   168   229   147   {}   {}   65   102   119   136   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   {}   {}   11   87   138   63   124   179   78   141   84   120   234   79   231   162   227   {}   {}   57   181   110   179   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   {}   {}   80   182   71   157   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   {}   {}   111   74   132   189   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   {}   {}   26   51   52   85   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   {}   {}   48   144   207   216   50   224   124   202   87   110   195   200   196   96   110   211   173   197   {}   {}   36   121   132   88   52   232   156   210   239   250   83   103   158   210   {}   {}   101   163   172   163   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105}
         1491  +
         1492  +do_execsql_test 1.6.9.5 {
         1493  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
         1494  +} {{}   {}   1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276}
         1495  +
         1496  +do_execsql_test 1.6.9.6 {
         1497  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING) FROM t2
         1498  +} {{}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
         1499  +
  1356   1500   do_execsql_test 1.7.2.1 {
  1357   1501     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
  1358   1502   } {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}
  1359   1503   
  1360   1504   do_execsql_test 1.7.2.2 {
  1361   1505     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
  1362   1506   } {0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0}
................................................................................
  1565   1709     set myres {}
  1566   1710     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2}] {
  1567   1711       lappend myres [format %.2f [set r]]
  1568   1712     }
  1569   1713     set myres
  1570   1714   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  1571   1715   
         1716  +do_execsql_test 1.7.9.1 {
         1717  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
         1718  +} {1   76   44   78   28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280   216   207}
         1719  +
         1720  +do_execsql_test 1.7.9.2 {
         1721  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
         1722  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
         1723  +
         1724  +do_execsql_test 1.7.9.3 {
         1725  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
         1726  +} {1   65   102   11   87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105   120   276}
         1727  +
         1728  +do_execsql_test 1.7.9.4 {
         1729  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
         1730  +} {1   196   134   109   213   223   106   234   191   212   168   229   147   218   240   65   102   119   136   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   261   263   11   87   138   63   124   179   78   141   84   120   234   79   231   162   227   228   280   57   181   110   179   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   130   252   80   182   71   157   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   271   171   111   74   132   189   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   213   274   26   51   52   85   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   195   226   48   144   207   216   50   224   124   202   87   110   195   200   196   96   110   211   173   197   119   124   36   121   132   88   52   232   156   210   239   250   83   103   158   210   171   198   101   163   172   163   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105   120   276}
         1731  +
         1732  +do_execsql_test 1.7.9.5 {
         1733  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
         1734  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
         1735  +
         1736  +do_execsql_test 1.7.9.6 {
         1737  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
         1738  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         1739  +
  1572   1740   do_execsql_test 1.8.2.1 {
  1573   1741     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
  1574   1742   } {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}
  1575   1743   
  1576   1744   do_execsql_test 1.8.2.2 {
  1577   1745     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
  1578   1746   } {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}
................................................................................
  1781   1949     set myres {}
  1782   1950     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW) FROM t2}] {
  1783   1951       lappend myres [format %.2f [set r]]
  1784   1952     }
  1785   1953     set myres
  1786   1954   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  1787   1955   
         1956  +do_execsql_test 1.8.9.1 {
         1957  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
         1958  +} {1   76   44   78   28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280   216   207}
         1959  +
         1960  +do_execsql_test 1.8.9.2 {
         1961  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
         1962  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
         1963  +
         1964  +do_execsql_test 1.8.9.3 {
         1965  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
         1966  +} {1   65   102   11   87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105   120   276}
         1967  +
         1968  +do_execsql_test 1.8.9.4 {
         1969  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
         1970  +} {1   196   134   109   213   223   106   234   191   212   168   229   147   218   240   65   102   119   136   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   261   263   11   87   138   63   124   179   78   141   84   120   234   79   231   162   227   228   280   57   181   110   179   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   130   252   80   182   71   157   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   271   171   111   74   132   189   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   213   274   26   51   52   85   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   195   226   48   144   207   216   50   224   124   202   87   110   195   200   196   96   110   211   173   197   119   124   36   121   132   88   52   232   156   210   239   250   83   103   158   210   171   198   101   163   172   163   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105   120   276}
         1971  +
         1972  +do_execsql_test 1.8.9.5 {
         1973  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
         1974  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
         1975  +
         1976  +do_execsql_test 1.8.9.6 {
         1977  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW) FROM t2
         1978  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         1979  +
  1788   1980   do_execsql_test 1.9.2.1 {
  1789   1981     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
  1790   1982   } {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}
  1791   1983   
  1792   1984   do_execsql_test 1.9.2.2 {
  1793   1985     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
  1794   1986   } {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}
................................................................................
  1997   2189     set myres {}
  1998   2190     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2}] {
  1999   2191       lappend myres [format %.2f [set r]]
  2000   2192     }
  2001   2193     set myres
  2002   2194   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  2003   2195   
         2196  +do_execsql_test 1.9.9.1 {
         2197  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
         2198  +} {1   76   44   78   28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280   216   207}
         2199  +
         2200  +do_execsql_test 1.9.9.2 {
         2201  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
         2202  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
         2203  +
         2204  +do_execsql_test 1.9.9.3 {
         2205  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
         2206  +} {1   65   102   11   87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105   120   276}
         2207  +
         2208  +do_execsql_test 1.9.9.4 {
         2209  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
         2210  +} {1   196   134   109   213   223   106   234   191   212   168   229   147   218   240   65   102   119   136   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   261   263   11   87   138   63   124   179   78   141   84   120   234   79   231   162   227   228   280   57   181   110   179   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   130   252   80   182   71   157   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   271   171   111   74   132   189   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   213   274   26   51   52   85   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   195   226   48   144   207   216   50   224   124   202   87   110   195   200   196   96   110   211   173   197   119   124   36   121   132   88   52   232   156   210   239   250   83   103   158   210   171   198   101   163   172   163   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105   120   276}
         2211  +
         2212  +do_execsql_test 1.9.9.5 {
         2213  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
         2214  +} {1   147   106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229}
         2215  +
         2216  +do_execsql_test 1.9.9.6 {
         2217  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
         2218  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         2219  +
  2004   2220   do_execsql_test 1.10.2.1 {
  2005   2221     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
  2006   2222   } {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}
  2007   2223   
  2008   2224   do_execsql_test 1.10.2.2 {
  2009   2225     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
  2010   2226   } {0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0}
................................................................................
  2213   2429     set myres {}
  2214   2430     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING) FROM t2}] {
  2215   2431       lappend myres [format %.2f [set r]]
  2216   2432     }
  2217   2433     set myres
  2218   2434   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  2219   2435   
         2436  +do_execsql_test 1.10.9.1 {
         2437  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
         2438  +} {28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280   216   207   207   207   207   207}
         2439  +
         2440  +do_execsql_test 1.10.9.2 {
         2441  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
         2442  +} {168   134   218   191   212   229   240   213   234   196   223   223   223   223   223   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   210   210   210   210   78   120   87   162   124   141   138   227   228   179   231   234   280   280   280   280   280   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   279   279   279   279   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   229   229   229   229   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   274   274   274   274   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   212   212   212   212   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   207   207   207   207   88   171   158   156   198   121   210   132   210   239   250   232   232   232   232   232   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229   229   229   229   229}
         2443  +
         2444  +do_execsql_test 1.10.9.3 {
         2445  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
         2446  +} {87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105   120   276   276   276   276   276}
         2447  +
         2448  +do_execsql_test 1.10.9.4 {
         2449  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
         2450  +} {213   223   106   234   191   212   168   229   147   218   240   240   240   240   240   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   261   263   263   263   263   263   124   179   78   141   84   120   234   79   231   162   227   228   280   280   280   280   280   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   130   252   252   252   252   252   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   271   171   171   171   171   171   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   213   274   274   274   274   274   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   195   226   226   226   226   226   50   224   124   202   87   110   195   200   196   96   110   211   173   197   119   124   124   124   124   124   52   232   156   210   239   250   83   103   158   210   171   198   198   198   198   198   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105   120   276   276   276   276   276}
         2451  +
         2452  +do_execsql_test 1.10.9.5 {
         2453  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
         2454  +} {168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229   229   229   229   229}
         2455  +
         2456  +do_execsql_test 1.10.9.6 {
         2457  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING) FROM t2
         2458  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         2459  +
  2220   2460   do_execsql_test 1.11.2.1 {
  2221   2461     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
  2222   2462   } {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}
  2223   2463   
  2224   2464   do_execsql_test 1.11.2.2 {
  2225   2465     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
  2226   2466   } {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}
................................................................................
  2429   2669     set myres {}
  2430   2670     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING) FROM t2}] {
  2431   2671       lappend myres [format %.2f [set r]]
  2432   2672     }
  2433   2673     set myres
  2434   2674   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  2435   2675   
         2676  +do_execsql_test 1.11.9.1 {
         2677  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
         2678  +} {44   78   28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280   216   207   207   207}
         2679  +
         2680  +do_execsql_test 1.11.9.2 {
         2681  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
         2682  +} {106   109   168   134   218   191   212   229   240   213   234   196   223   223   223   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   210   210   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   280   280   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   279   279   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   229   229   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   274   274   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   212   212   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   207   207   103   36   88   171   158   156   198   121   210   132   210   239   250   232   232   232   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229   229   229}
         2683  +
         2684  +do_execsql_test 1.11.9.3 {
         2685  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
         2686  +} {102   11   87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105   120   276   276   276}
         2687  +
         2688  +do_execsql_test 1.11.9.4 {
         2689  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
         2690  +} {134   109   213   223   106   234   191   212   168   229   147   218   240   240   240   119   136   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   261   263   263   263   138   63   124   179   78   141   84   120   234   79   231   162   227   228   280   280   280   110   179   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   130   252   252   252   71   157   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   271   171   171   171   132   189   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   213   274   274   274   52   85   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   195   226   226   226   207   216   50   224   124   202   87   110   195   200   196   96   110   211   173   197   119   124   124   124   132   88   52   232   156   210   239   250   83   103   158   210   171   198   198   198   172   163   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105   120   276   276   276}
         2691  +
         2692  +do_execsql_test 1.11.9.5 {
         2693  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
         2694  +} {106   109   168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229   229   229}
         2695  +
         2696  +do_execsql_test 1.11.9.6 {
         2697  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING) FROM t2
         2698  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         2699  +
  2436   2700   do_execsql_test 1.12.2.1 {
  2437   2701     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
  2438   2702   } {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}
  2439   2703   
  2440   2704   do_execsql_test 1.12.2.2 {
  2441   2705     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
  2442   2706   } {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}
................................................................................
  2645   2909     set myres {}
  2646   2910     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING) FROM t2}] {
  2647   2911       lappend myres [format %.2f [set r]]
  2648   2912     }
  2649   2913     set myres
  2650   2914   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  2651   2915   
         2916  +do_execsql_test 1.12.9.1 {
         2917  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
         2918  +} {28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280   216   207   207   207   207   207}
         2919  +
         2920  +do_execsql_test 1.12.9.2 {
         2921  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
         2922  +} {168   134   218   191   212   229   240   213   234   196   223   223   223   223   223   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   210   210   210   210   78   120   87   162   124   141   138   227   228   179   231   234   280   280   280   280   280   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   279   279   279   279   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   229   229   229   229   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   274   274   274   274   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   212   212   212   212   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   207   207   207   207   88   171   158   156   198   121   210   132   210   239   250   232   232   232   232   232   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229   229   229   229   229}
         2923  +
         2924  +do_execsql_test 1.12.9.3 {
         2925  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
         2926  +} {87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105   120   276   276   276   276   276}
         2927  +
         2928  +do_execsql_test 1.12.9.4 {
         2929  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
         2930  +} {213   223   106   234   191   212   168   229   147   218   240   240   240   240   240   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   261   263   263   263   263   263   124   179   78   141   84   120   234   79   231   162   227   228   280   280   280   280   280   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   130   252   252   252   252   252   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   271   171   171   171   171   171   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   213   274   274   274   274   274   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   195   226   226   226   226   226   50   224   124   202   87   110   195   200   196   96   110   211   173   197   119   124   124   124   124   124   52   232   156   210   239   250   83   103   158   210   171   198   198   198   198   198   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105   120   276   276   276   276   276}
         2931  +
         2932  +do_execsql_test 1.12.9.5 {
         2933  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
         2934  +} {168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229   229   229   229   229}
         2935  +
         2936  +do_execsql_test 1.12.9.6 {
         2937  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING) FROM t2
         2938  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         2939  +
  2652   2940   do_execsql_test 1.13.2.1 {
  2653   2941     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
  2654   2942   } {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   {}   {}}
  2655   2943   
  2656   2944   do_execsql_test 1.13.2.2 {
  2657   2945     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
  2658   2946   } {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   {}   {}}
................................................................................
  2861   3149     set myres {}
  2862   3150     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING) FROM t2}] {
  2863   3151       lappend myres [format %.2f [set r]]
  2864   3152     }
  2865   3153     set myres
  2866   3154   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  2867   3155   
         3156  +do_execsql_test 1.13.9.1 {
         3157  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
         3158  +} {28   105   33   41   11   99   92   108   72   52   83   55   79   109   65   26   120   119   50   70   103   80   124   36   96   59   124   116   110   57   51   52   130   103   74   87   48   128   117   105   136   131   71   133   92   109   63   84   109   57   146   78   147   113   74   88   150   87   110   65   121   106   110   124   85   145   107   161   171   150   156   80   171   120   109   158   114   111   136   147   87   173   124   168   173   162   132   101   154   167   190   161   110   156   195   198   102   123   177   169   140   111   180   119   160   197   152   124   121   134   146   147   132   213   141   193   200   210   157   132   136   175   161   218   188   226   191   187   208   211   179   138   144   223   196   214   170   212   202   163   184   172   173   195   229   240   187   210   200   163   227   228   223   191   252   235   225   243   172   187   202   179   179   182   231   261   207   263   206   189   209   212   276   181   274   249   239   234   213   234   269   196   271   221   210   229   235   250   223   232   229   279   224   280   216   207   207   207   {}   {}}
         3159  +
         3160  +do_execsql_test 1.13.9.2 {
         3161  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
         3162  +} {168   134   218   191   212   229   240   213   234   196   223   223   223   {}   {}   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   210   210   {}   {}   78   120   87   162   124   141   138   227   228   179   231   234   280   280   280   {}   {}   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   279   279   {}   {}   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   229   229   {}   {}   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   274   274   {}   {}   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   212   212   {}   {}   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   207   207   {}   {}   88   171   158   156   198   121   210   132   210   239   250   232   232   232   {}   {}   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229   229   229   {}   {}}
         3163  +
         3164  +do_execsql_test 1.13.9.3 {
         3165  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
         3166  +} {87   138   57   181   80   111   26   48   144   207   36   121   132   101   163   172   196   119   136   63   124   179   110   179   182   74   132   189   51   52   85   216   163   134   123   210   78   141   28   57   187   71   87   33   172   173   50   224   88   59   111   170   109   213   223   146   147   84   41   114   191   206   221   157   161   209   229   74   140   107   187   207   212   124   202   52   232   55   184   229   106   44   132   152   120   92   110   179   235   65   70   87   110   195   200   175   234   160   234   136   80   113   187   109   121   124   196   156   210   239   250   72   109   188   202   191   105   154   79   231   147   225   103   161   169   223   96   83   249   212   162   227   228   167   180   193   76   78   117   177   214   145   208   235   150   110   211   103   158   200   168   229   92   156   243   280   279   116   173   269   271   131   133   223   128   173   197   210   99   150   161   147   218   240   109   136   146   261   263   124   130   252   171   190   213   274   108   195   226   119   124   171   198   105   120   276   276   276   {}   {}}
         3167  +
         3168  +do_execsql_test 1.13.9.4 {
         3169  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
         3170  +} {213   223   106   234   191   212   168   229   147   218   240   240   240   {}   {}   123   210   146   147   44   132   152   160   105   154   92   156   243   109   136   146   261   263   263   263   {}   {}   124   179   78   141   84   120   234   79   231   162   227   228   280   280   280   {}   {}   28   57   187   41   114   191   206   221   92   110   136   147   167   180   193   279   124   130   252   252   252   {}   {}   161   209   229   179   235   80   225   76   78   117   177   214   116   173   269   271   171   171   171   {}   {}   87   74   140   113   187   103   161   169   145   208   235   131   133   223   190   213   274   274   274   {}   {}   33   172   173   107   187   207   212   65   70   109   121   124   223   150   128   108   195   226   226   226   {}   {}   50   224   124   202   87   110   195   200   196   96   110   211   173   197   119   124   124   124   {}   {}   52   232   156   210   239   250   83   103   158   210   171   198   198   198   {}   {}   59   111   170   55   184   229   175   72   109   188   202   249   200   99   150   161   105   120   276   276   276   {}   {}}
         3171  +
         3172  +do_execsql_test 1.13.9.5 {
         3173  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
         3174  +} {168   134   218   191   212   229   240   213   234   196   223   44   92   109   105   136   146   65   156   132   154   102   123   119   160   152   146   147   136   243   261   263   210   11   79   63   84   78   120   87   162   124   141   138   227   228   179   231   234   280   28   41   124   57   130   92   57   110   114   136   147   167   110   180   193   191   252   187   179   206   181   221   279   76   78   80   116   117   71   80   171   173   177   157   161   179   214   225   182   209   269   271   235   229   103   74   131   133   113   74   87   145   190   161   169   140   111   132   213   187   208   223   235   189   274   33   108   65   26   70   51   52   128   109   121   124   85   107   150   195   226   172   173   187   223   207   212   119   50   124   96   110   87   48   110   173   124   197   211   144   196   195   200   202   224   216   207   52   83   103   36   88   171   158   156   198   121   210   132   210   239   250   232   105   99   72   55   120   59   109   150   161   111   101   200   175   188   170   202   163   184   163   172   276   249   229   229   229   {}   {}}
         3175  +
         3176  +do_execsql_test 1.13.9.6 {
         3177  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING) FROM t2
         3178  +} {{}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
         3179  +
  2868   3180   do_execsql_test 1.14.2.1 {
  2869   3181     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
  2870   3182   } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99}
  2871   3183   
  2872   3184   do_execsql_test 1.14.2.2 {
  2873   3185     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
  2874   3186   } {0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0}
................................................................................
  3077   3389     set myres {}
  3078   3390     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2}] {
  3079   3391       lappend myres [format %.2f [set r]]
  3080   3392     }
  3081   3393     set myres
  3082   3394   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  3083   3395   
         3396  +do_execsql_test 1.14.9.1 {
         3397  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
         3398  +} {207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207}
         3399  +
         3400  +do_execsql_test 1.14.9.2 {
         3401  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
         3402  +} {223   223   223   223   223   223   223   223   223   223   223   223   223   223   223   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
         3403  +
         3404  +do_execsql_test 1.14.9.3 {
         3405  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
         3406  +} {276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
         3407  +
         3408  +do_execsql_test 1.14.9.4 {
         3409  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
         3410  +} {240   240   240   240   240   240   240   240   240   240   240   240   240   240   240   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
         3411  +
         3412  +do_execsql_test 1.14.9.5 {
         3413  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
         3414  +} {229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
         3415  +
         3416  +do_execsql_test 1.14.9.6 {
         3417  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
         3418  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         3419  +
  3084   3420   do_execsql_test 1.15.2.1 {
  3085   3421     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
  3086   3422   } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   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}
  3087   3423   
  3088   3424   do_execsql_test 1.15.2.2 {
  3089   3425     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
  3090   3426   } {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}
................................................................................
  3293   3629     set myres {}
  3294   3630     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING) FROM t2}] {
  3295   3631       lappend myres [format %.2f [set r]]
  3296   3632     }
  3297   3633     set myres
  3298   3634   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  3299   3635   
         3636  +do_execsql_test 1.15.9.1 {
         3637  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
         3638  +} {207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207}
         3639  +
         3640  +do_execsql_test 1.15.9.2 {
         3641  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
         3642  +} {223   223   223   223   223   223   223   223   223   223   223   223   223   223   223   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
         3643  +
         3644  +do_execsql_test 1.15.9.3 {
         3645  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
         3646  +} {276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
         3647  +
         3648  +do_execsql_test 1.15.9.4 {
         3649  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
         3650  +} {240   240   240   240   240   240   240   240   240   240   240   240   240   240   240   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
         3651  +
         3652  +do_execsql_test 1.15.9.5 {
         3653  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
         3654  +} {229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
         3655  +
         3656  +do_execsql_test 1.15.9.6 {
         3657  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING) FROM t2
         3658  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         3659  +
  3300   3660   do_execsql_test 1.16.2.1 {
  3301   3661     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
  3302   3662   } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   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}
  3303   3663   
  3304   3664   do_execsql_test 1.16.2.2 {
  3305   3665     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
  3306   3666   } {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}
................................................................................
  3509   3869     set myres {}
  3510   3870     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2}] {
  3511   3871       lappend myres [format %.2f [set r]]
  3512   3872     }
  3513   3873     set myres
  3514   3874   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  3515   3875   
         3876  +do_execsql_test 1.16.9.1 {
         3877  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
         3878  +} {207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207}
         3879  +
         3880  +do_execsql_test 1.16.9.2 {
         3881  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
         3882  +} {223   223   223   223   223   223   223   223   223   223   223   223   223   223   223   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   232   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
         3883  +
         3884  +do_execsql_test 1.16.9.3 {
         3885  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
         3886  +} {276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
         3887  +
         3888  +do_execsql_test 1.16.9.4 {
         3889  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
         3890  +} {240   240   240   240   240   240   240   240   240   240   240   240   240   240   240   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   280   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   198   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276}
         3891  +
         3892  +do_execsql_test 1.16.9.5 {
         3893  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
         3894  +} {229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229}
         3895  +
         3896  +do_execsql_test 1.16.9.6 {
         3897  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
         3898  +} {1   76   78   33   11   108   52   83   79   65   26   70   103   80   36   116   51   52   128   117   71   63   84   109   78   147   88   121   106   124   85   107   171   150   80   171   120   109   158   87   168   173   162   156   195   198   177   124   121   134   141   210   157   132   161   218   226   191   179   138   214   212   172   173   229   240   187   210   227   228   223   225   179   182   231   207   209   212   239   234   213   234   269   196   271   235   250   223   232   229   280   44   28   105   41   99   92   72   55   109   120   119   50   124   96   59   124   110   57   130   103   74   87   48   105   136   131   133   92   109   57   146   113   74   150   87   110   65   110   145   161   156   114   111   136   147   173   124   132   101   154   167   190   161   110   102   123   169   140   111   180   119   160   197   152   146   147   132   213   193   200   136   175   188   187   208   211   144   223   196   170   202   163   184   195   200   163   191   252   235   243   172   187   202   179   261   263   206   189   276   181   274   249   221   210   229   279   224   216   207}
         3899  +
  3516   3900   do_execsql_test 1.17.2.1 {
  3517   3901     SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
  3518   3902   } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   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   {}   {}   {}   {}}
  3519   3903   
  3520   3904   do_execsql_test 1.17.2.2 {
  3521   3905     SELECT min(b) OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
  3522   3906   } {1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   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   {}   {}   {}   {}}
................................................................................
  3725   4109     set myres {}
  3726   4110     foreach r [db eval {SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING) FROM t2}] {
  3727   4111       lappend myres [format %.2f [set r]]
  3728   4112     }
  3729   4113     set myres
  3730   4114   } {1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00}
  3731   4115   
         4116  +do_execsql_test 1.17.9.1 {
         4117  +  SELECT last_value(a+b) OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
         4118  +} {207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   {}   {}   {}   {}}
         4119  +
         4120  +do_execsql_test 1.17.9.2 {
         4121  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
         4122  +} {223   223   223   223   223   223   223   223   223   223   223   {}   {}   {}   {}   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   210   {}   {}   {}   {}   280   280   280   280   280   280   280   280   280   280   280   280   280   {}   {}   {}   {}   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   279   {}   {}   {}   {}   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   {}   {}   {}   {}   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   {}   {}   {}   {}   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   212   {}   {}   {}   {}   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   207   {}   {}   {}   {}   232   232   232   232   232   232   232   232   232   232   232   232   {}   {}   {}   {}   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   {}   {}   {}   {}}
         4123  +
         4124  +do_execsql_test 1.17.9.3 {
         4125  +  SELECT last_value(a+b) OVER ( ORDER BY b,a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
         4126  +} {276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   {}   {}   {}   {}}
         4127  +
         4128  +do_execsql_test 1.17.9.4 {
         4129  +  SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
         4130  +} {240   240   240   240   240   240   240   240   240   240   240   {}   {}   {}   {}   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   263   {}   {}   {}   {}   280   280   280   280   280   280   280   280   280   280   280   280   280   {}   {}   {}   {}   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   252   {}   {}   {}   {}   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   171   {}   {}   {}   {}   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   274   {}   {}   {}   {}   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   226   {}   {}   {}   {}   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   124   {}   {}   {}   {}   198   198   198   198   198   198   198   198   198   198   198   198   {}   {}   {}   {}   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   276   {}   {}   {}   {}}
         4131  +
         4132  +do_execsql_test 1.17.9.5 {
         4133  +  SELECT last_value(a+b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
         4134  +} {229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   229   {}   {}   {}   {}}
         4135  +
         4136  +do_execsql_test 1.17.9.6 {
         4137  +  SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING) FROM t2
         4138  +} {{}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
         4139  +
  3732   4140   finish_test