首页 > 解决方案 > 减去刚刚在 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 

有什么方法可以对我刚刚创建的列进行减法吗?

标签: sqlgoogle-bigquery

解决方案


您可以使用以下方法(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 
)

推荐阅读