aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/sql/suites/aggregate/percentile_interval.sql
blob: 922579f7eb10557eabfb8bc72847adc93e1a9801 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/* syntax version 1 */

$zero = unwrap( cast(0 as Interval) );
$one = unwrap( cast (1 as Interval ) );

-- we want to check both optional<interval> and plain interval
$prepared = select
              cast (key As Interval) ?? $zero as interval_data
              from plato.Input;

$source = select
              interval_data
              , interval_data + $one as interval_data2
              , just( interval_data ) as optional_interval_data
              from $prepared;

-- percentile factory can work with plain number and with tuple of numbers.
-- to achive second call we must make several percentile invocations with
-- same column name
$data_plain = select
  percentile(interval_data, 0.8) as result
  from $source;

-- optimization should unite this into one call to percentile with tuple as argument
$data_tuple = select
  percentile(interval_data2, 0.8) as result_1
  , percentile(interval_data2, 0.6) as result_2
  from $source;

$data_optional = select
  percentile(optional_interval_data, 0.4) as result
  from $source;

select EnsureType(result, Interval?) from $data_plain;
select EnsureType(result_1, Interval?) from $data_tuple;
select EnsureType(result_2, Interval?) from $data_tuple;
select result from $data_optional;