@@ -414,4 +414,40 @@ public function testBuilderSelectAllFormsOfIndexHints(): void
414414
415415 self ::assertSame ($ query , $ stmt ->build ());
416416 }
417+
418+ public function testBuilderSelectRowNumberOverAlias (): void
419+ {
420+ $ query = 'SELECT id, pid, appid, appname, row_number() over (partition by pid, appid) as `group_row_number` '
421+ . ' FROM game group by appname ' ;
422+ $ expected = 'SELECT id, pid, appid, appname, row_number() over (partition by pid, appid) AS `group_row_number` '
423+ . ' FROM game GROUP BY appname ' ;
424+
425+ $ parser = new Parser ($ query );
426+ $ stmt = $ parser ->statements [0 ];
427+
428+ self ::assertSame ($ expected , $ stmt ->build ());
429+ }
430+
431+ public function testBuilderSelectWindowFunctions (): void
432+ {
433+ $ queryVsExpected = [
434+ 'SELECT row_number() over (ORDER BY NULL) x ' => 'SELECT row_number() over (ORDER BY NULL) AS `x` ' ,
435+ 'SELECT rank() over (ORDER BY NULL) x ' => 'SELECT rank() over (ORDER BY NULL) AS `x` ' ,
436+ 'SELECT dense_rank() over (ORDER BY NULL) x ' => 'SELECT dense_rank() over (ORDER BY NULL) AS `x` ' ,
437+ 'SELECT cume_dist() over (ORDER BY NULL) x ' => 'SELECT cume_dist() over (ORDER BY NULL) AS `x` ' ,
438+ 'SELECT ntile(3) over (ORDER BY NULL) x ' => 'SELECT ntile(3) over (ORDER BY NULL) AS `x` ' ,
439+ 'SELECT ROW_NUMBER() OVER(ORDER BY NULL) x ' => 'SELECT ROW_NUMBER() OVER(ORDER BY NULL) AS `x` ' ,
440+ 'SELECT RANK()OVER(ORDER BY NULL) x ' => 'SELECT RANK()OVER(ORDER BY NULL) AS `x` ' ,
441+ 'SELECT DENSE_RANK()OVER(ORDER BY NULL) x ' => 'SELECT DENSE_RANK()OVER(ORDER BY NULL) AS `x` ' ,
442+ 'SELECT CUME_DIST()OVER(ORDER BY NULL) x ' => 'SELECT CUME_DIST()OVER(ORDER BY NULL) AS `x` ' ,
443+ 'SELECT NTILE(3)OVER(ORDER BY NULL) x ' => 'SELECT NTILE(3)OVER(ORDER BY NULL) AS `x` ' ,
444+ ];
445+
446+ foreach ($ queryVsExpected as $ query => $ expected ) {
447+ $ parser = new Parser ($ query );
448+ $ stmt = $ parser ->statements [0 ];
449+
450+ self ::assertSame ($ expected , $ stmt ->build ());
451+ }
452+ }
417453}
0 commit comments