gpt4 book ai didi

sql - 计算 BigQuery 中数组中的匹配项数

转载 作者:行者123 更新时间:2023-12-05 04:29:22 24 4
gpt4 key购买 nike

我如何计算数组中匹配项的数量?例如,对于数组 [1,2,3] 中的数字 [1,3],将有 2 个匹配项,而对于数组 [1,2],将有 1 个匹配项。现在我只能检查 [1,3] 是否在数组中。

  WITH `arrays` AS (
SELECT 1 id, [1,2,3] as arr
UNION ALL
SELECT 2, [1,2]
UNION ALL
SELECT 3, [3]

)
SELECT id, arr, [1,3] as numbers,
CASE
1 IN UNNEST(arr) and
3 IN UNNEST(arr)
WHEN TRUE THEN 'numbers is in array'
ELSE 'numbers is not in array'
END conclusion

FROM `arrays`

我试图得到这样的结果:

enter image description here

最佳答案

使用数学,以下似乎是可能的:

  • 如果 arrnumbers 的联合与 arr 相同,它将是 numbers is in array
  • 如果 arrnumbers 的并集大于 arr,则与增加的数量一样多的元素不在 arr 中
  • 因此,numbers_len - (union_len - arr_len) 将被检查
WITH `arrays` AS (
SELECT 1 id, [1,2,3] as arr
UNION ALL
SELECT 2, [1,2]
UNION ALL
SELECT 3, [3]
),
calculated_arrays AS (
SELECT *, [1,3] as numbers,
ARRAY_LENGTH(ARRAY(SELECT DISTINCT * FROM UNNEST(arr || [1, 3]))) AS union_len,
ARRAY_LENGTH(arr) AS arr_len,
ARRAY_LENGTH([1, 3]) AS numbers_len
FROM `arrays`
)
SELECT id, arr, numbers,
numbers_len - union_len + arr_len AS check,
IF (union_len = arr_len, 'numbers is in array', 'numbers is not in array') AS conclusion
FROM calculated_arrays
;

输出:

enter image description here

关于sql - 计算 BigQuery 中数组中的匹配项数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72334956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com