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

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

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

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

63lcw9qa1#

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

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

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

相关问题