# name: test/sql/window/test_empty_frames.test # description: Empty aggregate frames # group: [window] statement ok PRAGMA enable_verification statement ok CREATE TABLE t1 (id INTEGER, ch CHAR(1)) ; statement ok INSERT INTO t1 VALUES (1, 'A'); statement ok INSERT INTO t1 VALUES (2, 'B'); statement ok INSERT INTO t1 VALUES (NULL, 'B'); # # Original bug report # foreach agg count(*) count_star() query II SELECT id, ${agg} OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 0 2 1 NULL 0 endloop # # All zeroes # foreach agg approx_count_distinct count entropy query II SELECT id, ${agg}(id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 0 2 0 NULL 0 endloop # # All NULLs # foreach agg any_value arbitrary avg bit_and bit_or bit_xor favg first fsum group_concat histogram kahan_sum kurtosis last listagg mad max mean median min mode product sem skewness stddev stddev_pop stddev_samp sum sumkahan var_pop var_samp variance query II SELECT id, ${agg}(id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 NULL 2 NULL NULL NULL endloop # # Custom results # # Numeric parameter argument foreach agg approx_quantile quantile quantile_cont quantile_disc reservoir_quantile query II SELECT id, ${agg}(id, 0.5) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 NULL 2 NULL NULL NULL endloop # Mixed arguments foreach agg arg_max arg_min argmax argmin max_by min_by query II SELECT id, ${agg}(id, ch) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 NULL 2 NULL NULL NULL endloop foreach agg array_agg list query II SELECT id, ${agg}(id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 NULL 2 [NULL] NULL NULL endloop # Boolean argument foreach agg bool_and bool_or query II SELECT id, ${agg}(id > 0) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 NULL 2 NULL NULL NULL endloop # Two numeric arguments =>NULL foreach agg corr covar_pop covar_samp regr_avgx regr_avgy regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy query II SELECT id, ${agg}(id, id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 NULL 2 NULL NULL NULL endloop # Two numeric arguments => 0 foreach agg regr_count query II SELECT id, ${agg}(id, id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 0 2 0 NULL 0 endloop query II SELECT id, string_agg(id, ' ') OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 NULL 2 NULL NULL NULL query II SELECT id, bitstring_agg(id, 1, 3) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING) FROM t1 ORDER BY 1; ---- 1 NULL 2 NULL NULL NULL