Я могу использовать approx_quantiles
для массива, выполнив
(select approx_quantiles(reps, 10)[offset(5)] from unnest(arr_tab.arr) as reps) as med,
, где arr_tab.arr
- массив значений.
Я хотел бы получить одинаковые точные числа способ с percentile_disc
(массивы относительно малы), но следующее:
(select percentile_disc(reps, .5) from unnest(arr_tab.arr) as reps) as med,
выдает ошибку
Analyti c функция PERCENTILE_DIS C не может быть вызвана без предложения OVER на [17:11] Подробнее о функциях BigQuery SQL.
Вот полный пример запроса, который выполняется, если я закомментирую попытку percentile_disc
:
with arr_tab as (
SELECT [1, 2, 3] AS arr, 'a' as label UNION ALL
SELECT [4, 5, 6], 'c' UNION ALL
SELECT [10, 11, 12], 'd'
)
, q2 as (
select
label,
(select approx_quantiles(reps, 10)[offset(5)] from unnest(arr_tab.arr) as reps) as med,
-- (select percentile_disc(reps, .5) from unnest(arr_tab.arr) as reps) as med2,
from arr_tab
)
select *
from q2