# # Test NTH_VALUE() Window Function # Author: Bharath, bharath.bokka@mariadb.com # -- source ../include/have_columnstore.inc --disable_warnings DROP DATABASE IF EXISTS mcs129_db; --enable_warnings CREATE DATABASE mcs129_db; USE mcs129_db; CREATE TABLE t1 (a CHAR(1), b INT)ENGINE=Columnstore; INSERT INTO t1 VALUES ('', NULL),('a', 123),('a', 1),('b', 123),('c', 1861),('c', 1991),('d', 10701),('d', 1071),('a', 92); SELECT a, b, NTH_VALUE(a, 2) OVER(ORDER BY b DESC) second_value FROM t1; SELECT a, b, NTH_VALUE(b, 8) OVER(ORDER BY b) eight_value FROM t1; SELECT a, b, NTH_VALUE(a, 3) OVER(ORDER BY b) third_value FROM t1; SELECT a, b, NTH_VALUE(b, 3) OVER(ORDER BY a DESC) third_value FROM t1; SELECT a, b, NTH_VALUE(a, 1) OVER(ORDER BY b DESC) first_value FROM t1; SELECT a, b, NTH_VALUE(a, 4) OVER w fourth_value FROM t1 WINDOW w AS (ORDER BY a DESC); SELECT a, b, NTH_VALUE(b, 4) OVER w fourth_value FROM t1 WINDOW w AS (ORDER BY b); SELECT a, b, NTH_VALUE(a, 2) OVER(PARTITION BY b) second_value FROM t1; SELECT a, b, NTH_VALUE(a, 2) OVER(PARTITION BY a) second_value FROM t1; SELECT a, b, NTH_VALUE(a, 2) OVER(PARTITION BY a ORDER BY b DESC) second_value FROM t1; SELECT a, b, NTH_VALUE(a, 2) OVER(PARTITION BY a ORDER BY b ASC) second_value FROM t1; SELECT a, b, NTH_VALUE(a, 2) OVER(PARTITION BY b ORDER BY b DESC) second_value FROM t1; SELECT a, b, NTH_VALUE(b, 2) OVER(PARTITION BY a ORDER BY b DESC) second_value FROM t1; SELECT a, b, NTH_VALUE(b, 2) OVER(PARTITION BY a ORDER BY b ASC) second_value FROM t1; SELECT a, b, NTH_VALUE(b, 2) OVER(PARTITION BY b ORDER BY b DESC) second_value FROM t1; SELECT a, b, NTH_VALUE(a, 2) OVER(PARTITION BY a ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) second_value FROM t1; SELECT a, b, NTH_VALUE(b, 2) OVER(PARTITION BY a ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) second_value FROM t1; SELECT a, b, NTH_VALUE(a, 2) OVER(PARTITION BY b ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) second_value FROM t1; SELECT a, b, NTH_VALUE(b, 2) OVER(PARTITION BY b ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) second_value FROM t1; --error ER_WRONG_TYPE_FOR_RANGE_FRAME SELECT a, b, NTH_VALUE(b, 2) OVER(PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) second_value FROM t1; --error ER_WRONG_TYPE_FOR_RANGE_FRAME SELECT a, b, NTH_VALUE(a, 2) OVER(PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) second_value FROM t1; # Clean UP DROP DATABASE mcs129_db;