参数类型的operator>没有匹配的签名:string,int64支持的签名:any>any at bigquery

fhg3lkii  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(303)

我正在计算bigquery中每个用户的评级分数。但是,表中的评级列是字符串数据类型。因此,当我运行查询时,它会返回错误,我认为这是因为数据类型:

No matching signature for operator > for argument types: STRING, INT64. Supported signatures: ANY > ANY

伪代码是这样的:如果评级<0,则计数,如果评级>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;
taor4pac

taor4pac1#

使用 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;

相关问题