beliefer opened a new pull request #29604:
URL: https://github.com/apache/spark/pull/29604
### 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
**MySQL**
https://www.mysqltutorial.org/mysql-window-functions/mysql-nth_value-function/
### 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:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]