sql - 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 但这不是我想要的。
解决方案
SELECT REGEXP_EXTRACT(data, r'#\d+') code, COUNT(1)
FROM mydataset.mytable
GROUP BY 1
HAVING code IS NOT NULL
推荐阅读
- r - igraph 饼图顶点具有定义的段大小和每个段的连续颜色
- windows - 将批处理变量正确传递到嵌套循环 - 变量的延迟扩展
- amazon-web-services - AWSAppSync AWS 定义的标量类型 - 定义?
- docker - 如何在 Container-Optimized OS 中设置容器 ulimit
- sugarcrm - SuiteCRM/Sugar CRM 6.5:从不在生产环境中重新部署包?
- php - PHP - 修改字符串文本上图像的绝对路径/URL
- css - 如何在 Stack Overflow 网站上减少内容区域的 padding-top
- javascript - Mobx 商店中的 Toast 通知?不好的做法?
- node.js - 我应该如何存储/显示我的日期/时间字段?
- python - 如何使用多张工作表和不同的工作表名称将 dfs 导出为 excel