参数类型的运算符 > 没有匹配的签名: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的主要内容,如果未能解决你的问题,请参考以下文章