0

我有一张像

商店代码 国家代码 时间戳
无效的 FR 1234567890
123 FR 1234567890
456 国标 1234567890
789 国标 1234567890

我想得到

pct_null_store_code 国家代码
0.5 FR
0.0 国标

我知道如何用一个WHERE子句来做到这一点,如

SELECT SAFE_DIVIDE(COUNTIF(store_code IS NULL), COUNT(1)) as pct_null_store_code
FROM table
WHERE country_code = 'XX'

但我只想执行 1 个查询并获取每个查询的结果country_code

4

1 回答 1

1

一种方法只是使用avg()

SELECT country_code, 
       AVG(case when store_code IS NULL then 1.0 else 0 end) as null_ratio
FROM table
GROUP BY country_code;

如果要进行计数并除以总数,请使用COUNTIF()

SELECT country_code, 
       COUNTIF(store_code IS NULL) * 1.0 / COUNT(*) as null_ratio
FROM table
GROUP BY country_code;
于 2021-09-09T11:40:21.000 回答