beliefer opened a new pull request #27440:
URL: https://github.com/apache/spark/pull/27440


   ### What changes were proposed in this pull request?
   The `NTH_VALUE` function is an ANSI SQL.
   For examples:
   ```
   CREATE TEMPORARY TABLE empsalary (
       depname varchar,
       empno bigint,
       salary int,
       enroll_date date
   );
   
   INSERT INTO empsalary VALUES
   ('develop', 10, 5200, '2007-08-01'),
   ('sales', 1, 5000, '2006-10-01'),
   ('personnel', 5, 3500, '2007-12-10'),
   ('sales', 4, 4800, '2007-08-08'),
   ('personnel', 2, 3900, '2006-12-23'),
   ('develop', 7, 4200, '2008-01-01'),
   ('develop', 9, 4500, '2008-01-01'),
   ('sales', 3, 4800, '2007-08-01'),
   ('develop', 8, 6000, '2006-10-01'),
   ('develop', 11, 5200, '2007-08-15');
   
   select first_value(salary) over(order by salary range between 1000 preceding 
and 1000 following),
        lead(salary) over(order by salary range between 1000 preceding and 1000 
following),
        nth_value(salary, 1) over(order by salary range between 1000 preceding 
and 1000 following),
        salary from empsalary;
    first_value | lead | nth_value | salary 
   -------------+------+-----------+--------
           3500 | 3900 |      3500 |   3500
           3500 | 4200 |      3500 |   3900
           3500 | 4500 |      3500 |   4200
           3500 | 4800 |      3500 |   4500
           3900 | 4800 |      3900 |   4800
           3900 | 5000 |      3900 |   4800
           4200 | 5200 |      4200 |   5000
           4200 | 5200 |      4200 |   5200
           4200 | 6000 |      4200 |   5200
           5000 |      |      5000 |   6000
   (10 rows)
   ```
   
   There are some mainstream database support the syntax.
   
   **PostgreSQL:**
   https://www.postgresql.org/docs/8.4/functions-window.html
   
   **Vertica:**
   
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Functions/Analytic/NTH_VALUEAnalytic.htm?tocpath=SQL%20Reference%20Manual%7CSQL%20Functions%7CAnalytic%20Functions%7C_____23
   
   **Oracle:**
   
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/NTH_VALUE.html#GUID-F8A0E88C-67E5-4AA6-9515-95D03A7F9EA0
   
   **Redshift**
   https://docs.aws.amazon.com/redshift/latest/dg/r_WF_NTH.html
   
   **Presto**
   https://prestodb.io/docs/current/functions/window.html
   
   ### Why are the changes needed?
   The `NTH_VALUE` function is an ANSI SQL.
   The `NTH_VALUE` function is very useful.
   
   ### Does this PR introduce any user-facing change?
   No
   
   ### How was this patch tested?
   Exists and new UT.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to