我想在重复的字段中选择具有更多感谢k值的行。 (例如,考虑选择具有3个以上电子邮件地址的用户)
在标准SQL中我知道我可以使用
SELECT * FROM dataset.users
WHERE array_length(email_address) > 3
但是在BigQuery遗留SQL中执行此操作的方法是什么?
答案 0 :(得分:5)
不需要子查询;您应该能够直接使用OMIT RECORD IF
进行过滤:
SELECT *
FROM dataset.users
OMIT RECORD IF COUNT(email_address) <= 3;
但是,您是否介意评论为什么要使用旧版SQL?如果您遇到标准SQL的问题,我想了解它是什么,以便我们可以修复它。谢谢!
答案 1 :(得分:0)
在BigQuery的重复字段中计算值
BigQuery Legacy SQL
SELECT COUNT(email_address) WITHIN RECORD AS address_count
FROM [dataset.users]
如果您想要计算输出行数 - 可以使用下面的
SELECT COUNT(1) AS rows_count
FROM (
SELECT COUNT(email_address) WITHIN RECORD AS address_count
FROM [dataset.users]
)
WHERE address_count> 3