Как использовать процентный_дис c в массиве - PullRequest
0 голосов
/ 14 апреля 2020

Я могу использовать 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

1 Ответ

3 голосов
/ 14 апреля 2020

Вы можете использовать ниже

(SELECT PERCENTILE_DISC(reps, .5) OVER() FROM UNNEST(arr_tab.arr) AS reps LIMIT 1) AS med2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...