sql - 减去刚刚在 bigquery 中创建的列
问题描述
我的查询应该是使用 bigquery 根据数据中的关键字创建新列。例如,如果在数据中包含“迈克”,它将创建迈克列,“约翰”将创建约翰列并且列表继续。但是,我想创建一个“其他”列,它是用列减去整体名称我刚刚创建。
我的代码示例(在 SUBSTRACT 函数中出错):
SELECT
COUNT(Name) as n_name,
SUM(CASE WHEN Name LIKE '%MIKE%' THEN 1 ELSE 0 END) AS Mike,
SUM(CASE WHEN Name LIKE '%JOHN%' THEN 1 ELSE 0 END) AS John,
SUM(CASE WHEN Name LIKE '%MICHAEL%' THEN 1 ELSE 0 END) AS Michael,
.....
SUBSTRACT (n_name ,Mike and John) AS Others
FROM t
有什么方法可以对我刚刚创建的列进行减法吗?
解决方案
您可以使用以下方法(BigQuery 标准 SQL)
SELECT *,
n_name - Mike - John - Michael AS Other
FROM (
SELECT
COUNT(Name) AS n_name,
COUNTIF(Name LIKE '%MIKE%') AS Mike,
COUNTIF(Name LIKE '%JOHN%') AS John,
COUNTIF(Name LIKE '%MICHAEL%') AS Michael,
FROM t
)
推荐阅读
- ruby-on-rails - 我应该创建另一个引用唯一 ID 的表还是只在 Ruby on Rails 中添加唯一 ID 列?
- python - 查找集合字典的有效方法在python中具有零交集
- javascript - ajax preventDefault() 不适用于 django 表单
- angular - 在 Angular 表单验证期间添加 CSS 类
- mysql - 我的查询不起作用,请帮我找出错误
- c++ - LOAD_LIBRARY_AS_IMAGE_RESOURCE 和 LOAD_LIBRARY_AS_DATAFILE 有什么区别?
- sql - SQL Rank 和 Partition BY
- iot - 如何在 IFTTTT 中为不同用户创建 DELETE 端点
- javascript - TypeError: undefined is not a function in discord.js
- amazon-web-services - 如何将 Redshift 集群附加到 VPC