che*_*aco 5 sql string casting google-bigquery
我正在使用 Google BigQuery(不使用 LegacySQL),并且我目前正在尝试将字符串强制转换为 float64。每次我收到错误“双值错误”。我也试过 safe_cast() 但它完全消除了我的一些 id(例如:如果一个客户在 3 个不同的日期重复 3 次,并且单个“高度”条目只有 'null',则该客户在我使用 safe_cast(),而不仅仅是具有“空”值的行)。我的数据中没有任何奇怪的字符串值,只有整数或有理数或空条目。
这是我当前的代码:
select id, date,        
       cast(height as float64) as height,    
       cast(weight as float64) as weight   
from (select id, date, max(height) as height, max(weight) as weight   
      from table    
      group by 1,2
     )
group by 1, 2
Run Code Online (Sandbox Code Playgroud)
    当然safe_cast()返回NULL值。那是因为您在数据中有不适当的值。
您可以通过执行以下操作找到这些:
select height, weight
from table
where safe_cast(height) is null or safe_cast(weight) is null;
Run Code Online (Sandbox Code Playgroud)
一旦您了解了这些值是什么,请修复这些值或调整查询的逻辑。
如果您只希望值的最大值是正确的数字,则在聚合之前进行转换:
select id, date,
       max(safe_cast(height as float64)) as height,
       max(safe_cast(weight as float64)) as weight   
from table    
group by 1, 2;
Run Code Online (Sandbox Code Playgroud)
您的查询似乎不需要或不需要子查询。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           16891 次  |  
        
|   最近记录:  |