我试图计算“评级”高于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值,不是吗?希望对此有所帮助。谢谢!
答案 0 :(得分:1)
使用COUNTIF()
!
SELECT COUNTIF( survey_responses.survey_rating >= 9 ) AS survey_responses_num_positives
BigQuery具有此内置功能,方便使用。我建议使用它。
答案 1 :(得分:0)
您放错了括号:
SELECT
COUNT(IF(survey_responses.survey_rating >= 9,1,NULL))
AS survey_responses_num_positives
IF
接受3个参数,条件为true,否则为其他。
答案 2 :(得分:0)
文档:
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;
所以
IIF(survey_responses.survey_rating >= 9 ,1,NULL)
不确定是否可行!让我知道