参数类型的运算符 > 没有匹配的签名:STRING、INT64。支持的签名:BigQuery 中的 ANY > ANY
Posted
技术标签:
【中文标题】参数类型的运算符 > 没有匹配的签名:STRING、INT64。支持的签名:BigQuery 中的 ANY > ANY【英文标题】:No matching signature for operator > for argument types: STRING, INT64. Supported signatures: ANY > ANY at BigQuery 【发布时间】:2020-06-17 02:28:08 【问题描述】:我正在计算 bigquery 中每个用户的评分分数。但是,我在表中的评分列是字符串数据类型。因此,当我运行查询时,它会返回错误,我认为这是因为数据类型:
No matching signature for operator > for argument types: STRING, INT64. Supported signatures: ANY > ANY
伪代码如下: 如果 rating 10,则计数
SELECT
User_ID,
COUNT(CASE WHEN Rating < 0 THEN 1 ELSE 0 END) AS rating_below_1,
COUNT(CASE WHEN Rating > 0 THEN 1 ELSE 0 END) as rating_above_10
FROM
table
GROUP BY User_ID;
【问题讨论】:
请提供样本数据和期望的结果。 【参考方案1】:使用countif()
:
SELECT User_ID,
COUNTIF(Rating < '0') AS rating_below_1,
COUNTIF(Rating > '10') as rating_above_10
FROM table
GROUP BY User_ID;
你也可以使用safe_cast()
:
SELECT User_ID,
COUNTIF(SAFE_CAST(Rating as INT64) < 0) AS rating_below_1,
COUNTIF(SAFE_CAST(Rating as INT64) > 10) as rating_above_10
FROM table
GROUP BY User_ID;
【讨论】:
以上是关于参数类型的运算符 > 没有匹配的签名:STRING、INT64。支持的签名:BigQuery 中的 ANY > ANY的主要内容,如果未能解决你的问题,请参考以下文章
在数据迁移时,出现错误:运算符不存在:布尔 = 整数提示:没有运算符与给定的名称和参数类型匹配
没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。 -- Netbeans、Postgresql 8.4 和 Glassfish