以下示例适用于 BigQuery 标准 SQL
#standardSQL
WITH `project.dataset.percentiles` AS (
SELECT .81876543 percentile UNION ALL
SELECT .81123141 UNION ALL
SELECT .80121214 UNION ALL
SELECT .80012123 UNION ALL
SELECT .80001213 UNION ALL
SELECT .80001112 UNION ALL
SELECT .79999121
), targets AS (
SELECT check
FROM UNNEST([1, .9, .8, .7, .6, .5, .4, .3, .2, .1]) check
)
SELECT check, ARRAY_AGG(percentile ORDER BY ABS(percentile - check) LIMIT 10) val
FROM `project.dataset.percentiles`
CROSS JOIN targets
WHERE ABS(percentile - check) < .05
GROUP BY check
ORDER BY check
以上为每个百分位数提供 10 个最接近的值 - 100%、90%、80% 等
如果您每个人只需要一个 - 您可以查看以下查询
#standardSQL
WITH `project.dataset.percentiles` AS (
SELECT .81876543 percentile UNION ALL
SELECT .81123141 UNION ALL
SELECT .80121214 UNION ALL
SELECT .80012123 UNION ALL
SELECT .80001213 UNION ALL
SELECT .80001112 UNION ALL
SELECT .79999121
), targets AS (
SELECT check
FROM UNNEST([1, .9, .8, .7, .6, .5, .4, .3, .2, .1]) check
)
SELECT check, ARRAY_AGG(percentile ORDER BY ABS(percentile - check) LIMIT 1)[SAFE_OFFSET(0)] val
FROM `project.dataset.percentiles`
CROSS JOIN targets
WHERE ABS(percentile - check) < .05
GROUP BY check
ORDER BY check