首页 > 解决方案 > BigQuery:如何简化此 SQL

问题描述

这可能不仅限于 BigQuery,而是一般的 SQL。

我有这个 SQL 并且想在第一个字段(“代码”)为 NULL 时排除。

SELECT REGEXP_EXTRACT(data, r'#\d+') code, COUNT(1)
FROM mydataset.mytable
GROUP BY 1

这就是我最终发现的工作:

SELECT REGEXP_EXTRACT(data, r'#\d+') code, COUNT(1)
FROM mydataset.mytable
WHERE REGEXP_EXTRACT(data, r'#\d+') is not NULL
GROUP BY 1

这不起作用:

SELECT REGEXP_EXTRACT(data, r'#\d+') code, COUNT(1)
FROM mydataset.mytable
WHERE code is not NULL
GROUP BY 1

我可以继续我发现的工作,但我想知道是否有更优雅的方式来做同样的事情。我想我可以添加另一个外部 SELECT 但这不是我想要的。

标签: sqlgoogle-bigquery

解决方案


SELECT REGEXP_EXTRACT(data, r'#\d+') code, COUNT(1)
FROM mydataset.mytable
GROUP BY 1
HAVING code IS NOT NULL

推荐阅读