首页 > 解决方案 > 错误:对于参数类型的函数 IF 没有匹配的签名:BOOL。支持的签名:IF(BOOL, ANY, ANY)

问题描述

我正在尝试计算“评分”超过 9 的次数。使用 StandardSQL 在 Google 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 值,不是吗?将不胜感激任何帮助。谢谢!

标签: sqlgoogle-bigquerybigquery-standard-sql

解决方案


使用COUNTIF()

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

BigQuery 将这个内置功能作为一个方便的功能。我建议使用它。


推荐阅读