在sql query/bigquery中计算值的数目

bwitn5fc  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(282)

我有一个从json文档中提取一些数据的查询,还有一个基于返回的值的数量显示整个列计数的查询。我似乎不知道如何将这些合并到一个查询中?假设我需要使用一个子查询,但不确定从这里转到哪里?

SELECT
JSON_EXTRACT_SCALAR(data, '$.cat.name') as cat_name
JSON_EXTRACT_SCALAR(data, '$.dog.name') as dog_name
FROM table
SELECT
CASE WHEN cat_name IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN dog_name IS NOT NULL THEN 1 ELSE 0 END AS cat_dog_total 
FROM table
63lcw9qa

63lcw9qa1#

可以使用子查询来保持可读性:

SELECT (CASE WHEN cat_name IS NOT NULL THEN 1 ELSE 0 END +
        CASE WHEN dog_name IS NOT NULL THEN 1 ELSE 0 END
       ) AS cat_dog_total 
from (select JSON_EXTRACT_SCALAR(data, '$.cat.name') as cat_name
             JSON_EXTRACT_SCALAR(data, '$.dog.name') as dog_name
      from table
     ) t

当然,你可以在 JSON_EXTRACT_SCALAR() 表达式,但这更具可读性。

相关问题