sql - 错误:对于参数类型的函数 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 值,不是吗?将不胜感激任何帮助。谢谢!
解决方案
使用COUNTIF()
!
SELECT COUNTIF( survey_responses.survey_rating >= 9 ) AS survey_responses_num_positives
BigQuery 将这个内置功能作为一个方便的功能。我建议使用它。
推荐阅读
- iccube - 如何通过 XMLA 使用 $Monitoring 多维数据集获取用户统计信息?
- go - 无法解析 Go 代码中的值
- java - Hybris Commerce ERR SSL 版本或密码不匹配
- c++ - Clang、GCC 和 LTO 之间的互操作性
- neo4j - 如何通过对值使用聚合函数来删除节点和关系
- r - 如何在 R 中获取点-点-点参数的名称
- javascript - 每页有 7 个不同的侧面板
- rabbitmq - Rabbitmq + Spring AMQP:重新发送消息但没有确认返回
- javascript - 数组转换打字稿,javascript
- python - 平滑一个颠簸的圆圈