Error: No matching signature for function IF for argument types: BOOL. Supported signature: IF(BOOL, ANY, ANY)

Error: No matching signature for function IF for argument types: BOOL. Supported signature: IF(BOOL, ANY, ANY)

我正在尝试计算 "rating" 超过 9 的次数。使用 StandardSQLGoogle BigQuery 工作

我以前使用的是 CASE WHEN 函数,但想将其更改为 IF,因为只有一种情况。之前运行良好的代码:

SELECT 
COUNT(CASE WHEN (survey_responses.survey_rating  >= 9) THEN 1 ELSE NULL END) 
   AS survey_responses_num_positives

当前代码

SELECT 
COUNT(IF(survey_responses.survey_rating  >= 9),1,NULL)
   AS survey_responses_num_positives

当前代码吐出错误:

No matching signature for function IF for argument types: BOOL. Supported signature: IF(BOOL, ANY, ANY) at [11:39]

不是很理解IF语句是BOOL值吗?对此有任何帮助将不胜感激。谢谢!

你放错了括号:

SELECT 
COUNT(IF(survey_responses.survey_rating  >= 9,1,NULL))
   AS survey_responses_num_positives

IF 有 3 个参数,条件,如果为真,否则。

文档:

SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;  

所以

IIF(survey_responses.survey_rating  >= 9 ,1,NULL)

不确定这是否有效!所以让我知道

使用COUNTIF()!

SELECT COUNTIF( survey_responses.survey_rating >= 9 ) AS survey_responses_num_positives

BigQuery 有这个 built-in 作为一个方便的功能。我推荐使用它。